【问题标题】:find min no of coins required to get a value i: dynamic programming找到获得价值 i 所需的最小硬币数量:动态规划
【发布时间】:2014-02-12 17:49:05
【问题描述】:

找出计算金额所需的硬币数量,以便需要最少数量的硬币。硬币的价值为 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;
}

【问题讨论】:

  • 您在寻找什么输出,会发生什么?对于这个简单的问题,您的代码似乎没有多大意义。为什么需要sum 大小的数组?
  • 它缺少 cmets。除此之外,很难说。

标签: dynamic-programming


【解决方案1】:

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

应该在cin &gt;&gt; sum之后。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2015-05-08
    • 2020-09-22
    相关资源
    最近更新 更多