在c++程序中如何计算把1块钱分成由1分钱,2分钱和5分钱组成的程序买种硬币必须有一个,要求输出有多少种?

用c++写的,我这有个半成品,只能输出所有的组合而且还是有的硬币没用到的那种 麻烦哪位大哥看到帮忙改下 最好把printf改成cout类型的 谢谢诶
#include <iostream>
int main(void)
{
int f1,f2,f5,a=1;
printf("凑成一快钱的方法有:\n");
for(f1=0;f1<=100;f1++)
for(f2=0;f2<=50;f2++)
for(f5=0;f5<=20;f5++)
{
if((0.01*f1+0.02*f2+0.05*f5)<=1.001 && (0.01*f1+0.02*f2+0.05*f5)>=0.999)
printf("5分=%d 2分=%d 1分=%d\n",f5,f2,f1);
}
return 0;
}

#include <iostream>
using namespace std;
int main(void)
{
int f1,f2,f5,a=1;
cout<<"凑成一快钱的方法有:"<<endl;
for(f1=1;f1<=100;f1++) //从1开始,就可以保证每种硬币都至少有一个
for(f2=1;f2<=50;f2++)
for(f5=1;f5<=20;f5++)
{
if((f1+2*f2+5*f5)==100) //在此处以分为单位判断时用整数,比较好
cout<<"5分="<<f5<<" 2分="<<f2<<" 1分="<<f1<<endl;
}
return 0;
}追问

没有输出总数

追答

#include
using namespace std;
int main(void)
{
int f1,f2,f5,a=0;
cout<<"凑成一快钱的方法有:"<<endl;
for(f1=1;f1<=100;f1++) //从1开始,就可以保证每种硬币都至少有一个
for(f2=1;f2<=50;f2++)
for(f5=1;f5<=20;f5++)
{
if((f1+2*f2+5*f5)==100) //在此处以分为单位判断时用整数,比较好
{
a++;
cout<<"5分="<<f5<<" 2分="<<f2<<" 1分="<<f1<<endl;
}
}
cout<<"总数:"<<a;

return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-08
(1)算法可以考虑用组合数学中的母函数,枚举算法太慢了。
G(x) = (x+x^2+x^3+.....)(x^2+x^4+....)(x^5+x^10+.....)
求X^100前的系数。
不过接着怎么求出来这个系数,现在我也不会?
(2)把你的程序中所有循环初始值改成1,就是至少有1个了。
(3)cout用法:std::cout << "你想输出的内容" << endl;本回答被提问者和网友采纳
第2个回答  2011-04-07
#include <iostream>
using namespace std;
int main(void)
{

int f1,f2,f5,a=1;
cout << "凑成一快钱的方法有:\n";
for(f1=1;f1<=100;f1++)
for(f2=1;f2<=50;f2++)
for(f5=1;f5<=20;f5++)
{
if((0.01*f1+0.02*f2+0.05*f5)<=1.001 && (0.01*f1+0.02*f2+0.05*f5)>=0.999)
cout<<"5分="<<f5<<" 2分="<<f2<<" 1分="<<f1<<endl;
}
return 0;
}追问

没有输出总数

追答

#include
using namespace std;
int main(void)
{

int f1,f2,f5,a=1;
cout =0.999)
cout<<"5分="<<f5<<" 2分="<<f2<<" 1分="<<f1<<endl;
}
cout << "总数为:" << a<< endl;
return 0;
}

第3个回答  2011-04-07
#include<iostream>
int main()
{
int f1,f2,f5,a=1;
cout<<"凑成一快钱的方法有"<<endl;
for(f1=0;f1<=100;f1++)
for(f2=0;f2<=50;f2++)
for(f5=0;f5<=20;f5++)
{
if((100*f1+200*f2+500*f5)==100)
cout<<"5分="<<f5<<" 2分="<<f2<<" 1分="<<f1<<endl; }
return 0;
}
第4个回答  2011-04-07
#include <iostream>
int main(void)
{
int f1,f2,f5,a=0;
printf("凑成一快钱的方法有:\n");
for(f1=1;f1<100;f1++)
for(f2=1;f2<50;f2++)
for(f5=1;f5<20;f5++)
{
if(1*f1+2*f2+5*f5)==100)
a++;
}
cout<<a;
}追问

你 的错了