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

    问题 D: 【动态规划】货币面值

    时间限制: 1 Sec  内存限制: 64 MB
    提交: 16  解决: 14
    [提交][状态][讨论版]

    题目描述

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

    输入

    输入包含多个测试用例,每组测试用例的第一行输入一个整数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

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    int a[10005];
    
    void zeroonepack(int T,int t,int p){//总容量,单件物品消耗,单件价值
        for(int i=T;i>=t;i--){
            a[i]=max(a[i],a[i-t]+p);
        }
    }
    
    int main()
    {
        int n;
        int sum=0;
        int w[105];
        while(scanf("%d",&n)!=EOF){
            for(int i=0;i<n;i++){
                scanf("%d",&w[i]);
                sum+=w[i];
            }
            for(int i=0;i<sum;i++){
                a[i]=-999999;
            }
            a[0]=0;
            for(int j=0;j<n;j++){
                zeroonepack(sum,w[j],w[j]);
            }
            for(int i=0;i<sum;i++){
                if(a[i]<0){
                    printf("%d
    ",i);
                    break;
                }
            }
        }
        return 0;
    }


  • 相关阅读:
    trueStudio笔记
    C笔记
    printf打印输出
    DB9针和DB25针串口的引脚定义
    通信单位
    简单工厂
    不同进程之间发送消息将指定界面置顶
    Delegate event 委托事件---两个From窗体使用委托事件
    Winfrom窗体无法关闭问题--检查是否存在重写
    自定义控件添加事件
  • 原文地址:https://www.cnblogs.com/TWS-YIFEI/p/5779028.html
Copyright © 2011-2022 走看看