#include
using namespace std;
unsigned int num[7]={0};
const double money_value[7]={100,50,10,5,1,0.5,0.1};//将人民币面值定义到数组
const double des=74.5;//找钱总数
void search(unsigned short int t,double leave_money)
{
if(t==7)
return;
if(leave_money>9*money_value[t])//如果剩余的钱大于剩下的最大币值,则返回
return;
double current_money;
for (double i=0;i<=9;i++)
{
current_money=leave_money;
current_money-=money_value[t]*i;//计算剩下的钱
if (current_money<=-0.01)//不能继续减下去了
break;
num[t]=i;//
search(t+1,current_money);//让下一币值继续表示
if((current_money<=0)&¤t_money>-0.01)//注:此处酌情进行匹配,如果要求的精确度为0.01则此处应为-0.01
{
if(i==0)
break;
for(int k=0;k
if(num[k]==0)
continue;
cout<
cout<
for(int r=t;r<7;r++)
num[r]=0;
}
}
int main()
{
unsigned short int i=0;
search(0,des);
return 0;
}
童鞋。我还是要分。