方法一:穷举法
对于穷举法的思考,穷举法所包括的范围范围一定要 大于 可能出现情况个数的范围。
计算机无所谓你多出来那几次计算。
所以在穷举法里不用小心翼翼的拿捏循环次数。
只要 i f 条件满足题目条件即可。
#include <stdio.h>
int main()
{
int i,j,k,sum = 1; // x 代表10元纸币的张,y代表5元的,z 代表1元的
for (i = 1; i <= 50; i++) //最多拿五十张纸币
{
for (j = 1; j <= 50 ; j++) //最多拿五十张纸币
{
for (k = 1 ; k <=50 ; k++) //最多拿五十张纸币
{
if (i + j + k == 50 && 10 * i + 5 * j + k == 100)
{
printf("第%d种方法:10元%d张,5元%d张,1元%d张 \n",sum,i,j,k) ;
sum++ ;
}
}
}
}
printf("\n一共%d种方法\n\n",sum-1) ;
return 0;
}
方法二:
#include <stdio.h>
int main()
{
int i,j,k,sum = 1;
for (i = 1; i <= 9; i++) // 10元的最多拿9张。若拿10张,就不满足每种最少一张的条件了。
{
for (j = 1 ; j <= 19 ; j++) // 5元的最多拿19张 。
{
k = 50 - i - j ; // 一共50张减去拿走的 10元 和 5元 剩下的是一元的。
if (i + j + k == 50 && 10 * i + 5 * j + k == 100)
{
printf("第%d种方法:10元%d张,5元%d张,1元%d张 \n",sum,i,j,k) ;
sum++ ;
}
}
}
printf("\n一共%d种方法\n\n",sum-1) ;
return 0;
}