zoukankan      html  css  js  c++  java
  • 算法训练 邮票

     算法训练 邮票  
    时间限制:1.0s   内存限制:512.0MB
        
    问题描述
      给定一个信封,有N(1≤N≤100)个位置可以贴邮票,每个位置只能贴一张邮票。我们现在有M(M<=100)种不同邮资的邮票,面值为X1,X2….Xm分(Xi是整数,1≤Xi≤255),每种都有N张。

      显然,信封上能贴的邮资最小值是min(X1, X2, …, Xm),最大值是 N*max(X1, X2, …,  Xm)。由所有贴法得到的邮资值可形成一个集合(集合中没有重复数值),要求求出这个集合中是否存在从1到某个值的连续邮资序列,输出这个序列的最大值。

      例如,N=4,M=2,面值分别为4分,1分,于是形成1,2,3,4,5,6,7,8,9,10,12,13,16的序列,而从1开始的连续邮资序列为1,2,3,4,5,6,7,8,9,10,所以连续邮资序列的最大值为10分。
    输入格式
      第一行:最多允许粘贴的邮票张数N;第二行:邮票种数M;第三行:空格隔开的M个数字,表示邮票的面值Xi。注意:Xi序列不一定是大小有序的!
    输出格式
      从1开始的连续邮资序列的最大值MAX。若不存在从1分开始的序列(即输入的邮票中没有1分面额的邮票),则输出0.
    样例输入
    样例一:
    4
    2
    4 1
    样例二:
    10
    5
    2 4 6 8 10

    样例输出

    样例一:
    10
    样例二:
    0
    import java.util.Scanner;
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner sc=new Scanner(System.in);
            int n=sc.nextInt();
            int m=sc.nextInt();
            int mianzhi[]=new int[m];
            for(int i=0;i<m;i++)
                mianzhi[i]=sc.nextInt();
            int dp[]=new int[26000];
            int max=0;
            int found;
            int min,t;
            while(true){
                max++;
                found=0;
                min=10000000;
                for(int i=0;i<m;i++){
                    t=max-mianzhi[i];
                    if(t>=0&&dp[t]+1<min){
                        dp[max]=dp[t]+1;
                        min=dp[t]+1;
                        found=1;
                    }
                }
                if(dp[max]>n||found==0){
                    System.out.println(max-1);
                    break;
                }
            }
        }
    
    }
     
  • 相关阅读:
    Linux服务下,设置开机自启动服务
    [知识分享] 实用且具有参考意义的博客网站
    [AutoHotKey] 自定义配置快捷键
    [driver] probe调用的时机
    [vscode] 常用快捷键
    [Linux] 双系统下linux自动挂载windows下的逻辑分区
    [Linux] manjaro中文输入法配置
    [Linux] gnome桌面顶栏透明效果
    [Linux] manjaro窗口按钮异常
    博客园简约主题设置
  • 原文地址:https://www.cnblogs.com/watchfree/p/5356486.html
Copyright © 2011-2022 走看看