c语言把1分、2分、5分的硬币10枚组成2角4分,有多少种不同的组合?

如题所述

假设1分,2分和5分的硬币分别需要a,b和c枚,根据题意,可以得到的条件有:

1) a+b+c = 10
2) a+2b+5c = 24
3) a,b,c均>=0
整理得:b+4c=14(其中a=10-b-c)
所以可以用枚举法:
int main(int argc, char **argv)
{
int a, b, c = 0;
int ret = 0;

for(b = 0; b <= 12; b++){
for(c = 0; c <= 4; c++){
if(b+4*c == 14){
a = 10 - b - c;
if(a >= 0){
printf("The result(a,b,c) = (%d,%d,%d)\n", a,b,c);
ret++;
}
}
}
}

printf("The num is %d\n", ret);
return 0;
}

还可以优化一下……
结果大致:
The result(a,b,c) = (5,2,3)
The result(a,b,c) = (2,6,2)
The num is 2
温馨提示:答案为网友推荐,仅供参考
相似回答