硬币方案
 有50枚硬币,可能包括4种类型:1元,5角,1角,5分。
 已知总价值为20元。求各种硬币的数量。
 比如:2,34,6,8 就是一种答案。
 而 2,33,15,0 是另一个可能的答案,显然答案不唯一。
 你的任务是确定类似这样的不同的方案一共有多少个(包括已经给出的2个)?
 直接提交该数字,不要提交多余的内容。
思路:什么也别想,比赛时间紧,而且只要求输出答案即可,直接暴力搜索!
 小技巧:5角,1角,5分化成浮点型数据(double)容易计算出错,把所有数去全乘以100,20块变成2000块,
 1元,5角,1角,5分变成100元,50元,10元,5元。整形计算出错率大大降低
AC代码:
#include<stdio.h>
int b[1000][4];
int main()
{
int i,j,x,p,k=0;
int n=2000;
for(i=0;i<=50;i++)
for(j=0;j<=50;j++)
for(x=0;x<=50;x++)
for(p=0;p<=50;p++)
{
if(i*100+j*50+x*10+p*5==n&&i+j+x+p==50)
{
b[k][0]=i;b[k][1]=j;b[k][2]=x;b[k][3]=p;
printf("%d %d %d %d\n",i,j,x,p);
k++;
}
}
for(i=0;i<k;i++)
{
for(j=0;j<4;j++)
printf("%d ",b[i][j]);
puts("");
}
printf("总数为:%d\n",k);
while(1);
return 0;
}
答案:50种
 所有情况
 0 38 8 4
 1 36 7 6
 2 33 15 0
 2 34 6 8
 3 31 14 2
 3 32 5 10
 4 29 13 4
 4 30 4 12
 5 27 12 6
 5 28 3 14
 6 24 20 0
 6 25 11 8
 6 26 2 16
 7 22 19 2
 7 23 10 10
 7 24 1 18
 8 20 18 4
 8 21 9 12
 8 22 0 20
 9 18 17 6
 9 19 8 14
 10 15 25 0
 10 16 16 8
 10 17 7 16
 11 13 24 2
 11 14 15 10
 11 15 6 18
 12 11 23 4
 12 12 14 12
 12 13 5 20
 13 9 22 6
 13 10 13 14
 13 11 4 22
 14 6 30 0
 14 7 21 8
 14 8 12 16
 14 9 3 24
 15 4 29 2
 15 5 20 10
 15 6 11 18
 15 7 2 26
 16 2 28 4
 16 3 19 12
 16 4 10 20
 16 5 1 28
 17 0 27 6
 17 1 18 14
 17 2 9 22
 17 3 0 30
 18 0 8 24
 0 38 8 4
 1 36 7 6
 2 33 15 0
 2 34 6 8
 3 31 14 2
 3 32 5 10
 4 29 13 4
 4 30 4 12
 5 27 12 6
 5 28 3 14
 6 24 20 0
 6 25 11 8
 6 26 2 16
 7 22 19 2
 7 23 10 10
 7 24 1 18
 8 20 18 4
 8 21 9 12
 8 22 0 20
 9 18 17 6
 9 19 8 14
 10 15 25 0
 10 16 16 8
 10 17 7 16
 11 13 24 2
 11 14 15 10
 11 15 6 18
 12 11 23 4
 12 12 14 12
 12 13 5 20
 13 9 22 6
 13 10 13 14
 13 11 4 22
 14 6 30 0
 14 7 21 8
 14 8 12 16
 14 9 3 24
 15 4 29 2
 15 5 20 10
 15 6 11 18
 15 7 2 26
 16 2 28 4
 16 3 19 12
 16 4 10 20
 16 5 1 28
 17 0 27 6
 17 1 18 14
 17 2 9 22
 17 3 0 30
 18 0 8 24
总数为50组










