找到最小的硬币需要得到一个值i:动态编程

时间:2014-02-12 17:49:06

标签: dynamic-programming

找出计算金额所需的硬币数量,以便需要最少量的硬币。硬币的价值为1,3和5。 这个代码怎么了?

#include<iostream>
using namespace std;
int main()
{
     int i,j,sum,coins[]={1,3,5}, min[sum];
     cin>>sum;
     for(i=0;i<=sum;i++)
        min[i]=999;
     min[0]=0;
     for(i=1;i<=sum;i++)
     {
       for(j=0;j<3;j++)
       {
            if((coins[j]<=i) && ( (min[i-coins[ j ]]    + 1)    < min[i] ))
            {

                    min[i]=min[i-coins[j]] +1;
                    cout<<i<<"="<<min[i];cout<<endl;    
            }
       }
     }
     cout<<min[sum];    
     return 0;
}

1 个答案:

答案 0 :(得分:0)

在初始化之前,您要设置数组min的大小sum

应该在cin >> sum之后。

作为建议,最好分别声明和初始化数组。