回复 13楼 LegendofMine
那我先来一个,这个是我们上课的时候老师给的代码,我自己写的不是很规范,所以就给老师的了
这是用递推做的
#include<stdio.h>
void main()
{
int p,i,j,m,n,k;
static int x[12];
static long int a[12][1001];
long b,s;
printf("请输入整币值(单位数):");
/* 输入处理数据 */
scanf("%d",&m);
printf("请输入零币种数:");
scanf("%d",&n);
printf("(从小至大依次输入每种零币值)\n");
for(i=1;i<=n;i++)
{
printf("第%d种零币值(单位数):",i);
scanf("%d",&x[i]);
}
for(i=0;i<=m;i++)
/* 确定初始条件 */
if(i%x[1]==0) a[1][i]=1; else a[1][i]=0;
for(s=a[1][m],j=2;j<=n;j++)
/* 递推计算a(2,m),a(3,m),...*/
{
for(i=x[j];i<=m;i++)
{
p=i-x[j];b=0;
for(k=1;k<=j;k++)
b+=a[k][p];
a[j][i]=b;}
s+=a[j][m];
}
/* 累加a(1,m),a(2,m),...*/
printf("整币兑零种数为:%ld\n",s);
/* 输出兑零种数 */
}