深宫凤帷春醉废妃txt:一道基础的编程题。有谁愿意帮我啊!
来源:百度文库 编辑:中科新闻网 时间:2024/05/09 12:41:09
先给20分吧。回答好的话再加。谢谢了!
是50元、20元、10元、5元、2元、1都要有
还有麻烦用C++的形式写出来。
#include <stdio.h>
main()
{
int a,b,c,d,e,f;
int cnt=1;
for(a=1;a<=2;a++)
for(b=1;b<=5;b++)
for(c=1;c<=10;c++)
for(d=1;d<=20;d++)
for(e=1;e<=50;e++)
for(f=1;f<=100;f++)
if(a*50+b*20+c*10+d*5+e*2+f==100)
printf("%d: 五十元%d张,二十元%d张,十元%d张,五元%d张,二元%d张,一元%d张\n",cnt++,a,b,c,d,e,f);
}
共15个组合
有四种组合
#include<stdio.h>
main(){
int a,b,c,d,e;
for(a=1;a<=2;a++){
for(b=1;b<=5;b++){
for(c=1;c<=10;c++){
for(d=1;d<=20;d++){
for(e=1;e<=100;e++){
if(a*50+b*20+c*10+d*5+e==100&&a!=0&&b!=0&&c!=0&&d!=0&&e!=0)
printf("%d*50+%d*20+%d*10+%d*5+%d=100",a,b,c,d,e);
}
}
}
}
}
}
#include<stdio.h>
main(){
int a,b,c,d,e;
int i=1;
for(a=1;a<=2;a++){
for(b=1;b<=5;b++){
for(c=1;c<=10;c++){
for(d=1;d<=20;d++){
for(e=1;e<=100;e++){
if(a*50+b*20+c*10+d*5+e==100)i+=1;
printf("%d*50+%d*20+%d*10+%d*5+%d=100",a,b,c,d,e);/*输出各种组合*/
}
}
}
}
}
printf("%d\n",i);/*输出方法数*/
}
嗯,楼上诸位用的穷举法,可以实现目标,但是效率。。。应该有更好的方法实现吧。
贪心算法吧?
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d;
int k=0;
/*要是没种面额的货币都有,则50元最多1张,20元最多1张,10元最多2张*/
for(a=1;a<=2;a++){ //10yuan
for(b=1;70+10*a+5*b<=97;b++ ) { //5yuan
for(c=1;70+10*a+5*b+2*c<=99;c++ ){ //2yuan
for(d=1;70+10*a+5*b+2*c+d<=100;d++){ //1yuan
if( 70+10*a+5*b+2*c+d==100){
cout<<"50+20+10x"<<a<<"+5x"<<b<<"+2x"<<c<<"+1x"<<d<<'\n';
k++;
}
}
}
}
}
cout<<"共有"<<k<<"种组合!\n";
return 0;
}
这才是正中的C++,在VC++中测试通过!答案15种!