来晚了点;
#include <stdio.h>
void main(){
int count50; /*面值为50的数目,由钱的总数为500
和每种面值的至少一张可知count50<10*/
int count20; /*同上,count20<22*/
int count10; /*面值为10的数目,因兑换后钱的张数为30
和每种面值的至少一张可知,count10<28*/
int count5; /*面值为5的数目,
其数目为30-(count50+count20+count+10),且>0*/
int loop=0; /*用于记录循环次数*/
int i=0; /*用于记录所有可能的兑换方法次数*/
for(count50=1;count50<10;count50++)
for(count20=1;count20<22;count20++)
for(count10=1;count10<28;count10++){
count5=30-(count50+count20+count10);
if(count5<1)
break;
loop++;
if(count50*50+count20*20+count10*10+count5*5==500){
printf("50的张数为:%d\t",count50);
printf("20的张数为:%d\t",count20);
printf("10的张数为:%d\t",count10);
printf("5的张数为:%d\n",count5);
i++;
}
}
printf("总的循环次数为:%d\n",loop);
printf("所有可能的兑换方法有%d种\n\n",i);
}
运行了下,结果为:
……
50的张数为:4 20的张数为:5 10的张数为:19 5的张数为:2
50的张数为:4 20的张数为:6 10的张数为:16 5的张数为:4
50的张数为:4 20的张数为:7 10的张数为:13 5的张数为:6
50的张数为:4 20的张数为:8 10的张数为:10 5的张数为:8
50的张数为:4 20的张数为:9 10的张数为:7 5的张数为:10
50的张数为:4 20的张数为:10 10的张数为:4 5的张数为:12
50的张数为:4 20的张数为:11 10的张数为:1 5的张数为:14
50的张数为:5 20的张数为:1 10的张数为:22 5的张数为:2
50的张数为:5 20的张数为:2 10的张数为:19 5的张数为:4
50的张数为:5 20的张数为:3 10的张数为:16 5的张数为:6
50的张数为:5 20的张数为:4 10的张数为:13 5的张数为:8
50的张数为:5 20的张数为:5 10的张数为:10 5的张数为:10
50的张数为:5 20的张数为:6 10的张数为:7 5的张数为:12
50的张数为:5 20的张数为:7 10的张数为:4 5的张数为:14
50的张数为:5 20的张数为:8 10的张数为:1 5的张数为:16
50的张数为:6 20的张数为:1 10的张数为:13 5的张数为:10
50的张数为:6 20的张数为:2 10的张数为:10 5的张数为:12
50的张数为:6 20的张数为:3 10的张数为:7 5的张数为:14
50的张数为:6 20的张数为:4 10的张数为:4 5的张数为:16
50的张数为:6 20的张数为:5 10的张数为:1 5的张数为:18
50的张数为:7 20的张数为:1 10的张数为:4 5的张数为:18
50的张数为:7 20的张数为:2 10的张数为:1 5的张数为:20
总的循环次数为:2458
所有可能的兑换方法有37种