• 九度 题目1395:爱钱的胡老板


    题目1395:爱钱的胡老板

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    题目描述:

    胡老板,别名浩帆,是九度技术组中最喜欢钱的一个,当然了,他钱肯定是没多少的,但是他唯一的乐趣也就是把玩手中不多的钱了。

    胡老板难得出了趟国(当然了,也就越南老挝东南亚了,前面说了,他钱不多)。

    在A国,他发现了一台自动兑换货币的机器。这时,他爱钱的兴趣又体现出来了,他想通过兑换一定数量的钱,来保证换取这个国家的所有种类的硬币。但是,这种自动兑换机的兑换策略并不知道,所以胡老板想让你帮忙计算下,是否存在这么一种可能,通过兑换一定数量的纸币,能够保证一定获取所有可能的硬币,假如存在,则只需要告诉胡老板其最小值;假如不存在,就输出-1。

    例如,A国有2、5这两种面额的硬币,那么我们只需要兑换7面额的纸币即可保证获取2和5这两种面额的硬币;同样,若B国有1、2这两种面额的硬币,那我们就无能为力了,因为所有的面额,可能都是由面额为1的硬币组成。

    输入:

    每个测试案例包括两行:

    第一行为整数N,代表硬币的种类,其中1 <= N <= 50。

    第二行为N个大于0小于等于10000的整数,代表硬币的面额。注意,不同种类的硬币,面额也可能一样。

    输出:

    对于每个测试案例,输出一行:

    若方案存在,则输出一个最小的值;若不存在,则输出-1。

    样例输入:
    2
    2 5
    2
    1 2
    2
    1 1
    
    样例输出:
    7
    -1
    -1

    完全背包,题目比较有新意吧。
    #include <iostream>
    #include <string.h>
    #include <string>
    #include <algorithm>
    #include <stdio.h>
    #include <queue>
    #include <set>
    #include <limits.h>
    #include <fstream>
    #include <map>
    #include <math.h>
    #define Max(a,b) ((a)>(b)?(a):(b))
    #define Min(a,b) ((a)<(b)?(a):(b))
    using namespace std ;
    const int size=58 ;
    struct Me{
       int N ;
       int sum ;
       int num[size] ;
       int dp[10000*50+1] ;
       Me(){}
       Me(int n):N(n){}
       int gao_qi(){
           sum=0 ;
           for(int i=1;i<=N;i++){
               scanf("%d",&num[i]) ;
               sum+=num[i] ;
           }
           fill(dp+1,dp+1+sum,0) ;
           dp[0]=1 ;
           for(int i=1;i<=N;i++){
              for(int j=num[i];j<=sum;j++){
                  if(dp[j-num[i]]!=-1)
                       dp[j]+=dp[j-num[i]] ;
              }
           }
           return dp[sum]==1?sum:-1 ;
       }
    };
    int main(){
       int n ;
       while(scanf("%d",&n)!=EOF){
           Me me(n) ;
           printf("%d
    ",me.gao_qi()) ;
       }
       return 0 ;
    }
  • 相关阅读:
    Java线程中带有返回值的线程Callable
    Android 子线程测试
    JAVA下的Thread.sleep方法一定要try
    解决Android Studio 和 Android SDK Manager 无法在线更新的问题.
    asp.net关于页面不回发,不生成__doPostBack方法问题的完美解决方案
    git 使用2
    前端vue组件传参
    微信小程序 路由跳转 异步请求 存储数据,微信登录接口
    微信小程序 基本介绍及组件
    安装虚拟机
  • 原文地址:https://www.cnblogs.com/liyangtianmen/p/3258958.html
Copyright © 2020-2023  润新知