来晚了点;
#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种