#include <stdio.h>
#include <stdlib.h>
int main()
{
int num[3];// number of kinds coin
int min=0;//define minimum
for(int i=0;i<3;i++)
{
scanf("%d",&num[i]);
if(i==0)
min=num[i];
if(min>num[i])
min=num[i];
}
int n;
scanf("%d",&n);
int sum[n+1];
for(int i=0;i<=n;i++)
{
sum[i]=0;
}
//sum[n+1]=0;
for(int i=1;i<min;i++)//assign a value to a number the minimum value
{
sum[i]=9999;
}
//printf("%d",min);
//sum[0]=0;
int h=0;
for(int i=0;i<=n;i++)
{
for(int s=0;s<3;s++)
{
if(i-num[s]>=0)
{
sum[i]=sum[i-num[s]]+1;
if(s==0)
h=sum[i];
if(s>0)
{
if(h>sum[i])
{
h=sum[i];
}
}
if(s==2)
sum[i]=h;
printf("%d\n",sum[i]);
}
}
}
if(sum[n]>n)
printf("-1");
else
printf("%d",sum[n]);
return 0;
}
动态规划---求硬币最优解
最新推荐文章于 2022-04-07 21:33:43 发布