zoukankan      html  css  js  c++  java
  • 【动态规划】货币面值

     【动态规划】货币面值

    时间限制: 1 Sec  内存限制: 64 MB

    题目描述

    魔法世界发行了很多不同面值的纸币,试求出用这些纸币进行任意的组合不能表示的最小面值是多少。

    输入

    输入包含多个测试用例,每组测试用例的第一行输入一个整数N(N≤100)表示流通的纸币面额数量,第二行是N个纸币的具体表示面额,取值范围为1~100。

    输出

    对于每组测试用例,输出一个整数,表示已经发行的所有纸币都不能表示的最小面值(已经发行的每个纸币面值最多只能使用一次,但面值可能有重复)。

    样例输入

    5
    1 2 3 9 100
    5
    1 2 4 9 100
    5
    1 2 4 7 100
    

    样例输出

    7
    8
    15

    分析:相当于简单0-1背包问题恰好凑够j元
    #include <iostream>
    #define INF 0x3f3f3f3f
    using namespace std;
    int m,a[111],f[11111];
    
    void OneZeroPack(int m,int v,int w)
    {
        for(int i=m;i>=v;i--)
            f[i]=max(f[i],f[i-v]+w);
    }
    
    int main()
    {
        while(cin>>m)
        {
            for(int i=0;i<m;i++)
                cin>>a[i];
            for(int i=1;i<m*100+1;i++)    f[i]=-INF;
            f[0]=0;
            for(int i=0;i<m;i++)
                OneZeroPack(m*100,a[i],a[i]);
            for(int i=0;i<m*100+1;i++)
            {
                if(f[i]<0)
                {
                    cout<<i<<endl;
                    break;
                }
            }
        }
        return 0;
    }
     
  • 相关阅读:
    数组字典
    字符串创建
    不可变数组
    数组
    纯净控制台
    可变字典
    数组Array
    id NSObject instanceType 区别
    可变字符串 插入,删除,替换,赋值
    查询字符串中某部分的字符串
  • 原文地址:https://www.cnblogs.com/asuml/p/5733771.html
Copyright © 2011-2022 走看看