zoukankan      html  css  js  c++  java
  • Holding Bin-Laden Captive!_hdu_1085(DP).java

    /*
     * 9607741 2013-11-17 18:04:23 Accepted 1085 187MS 5700K 1251 B Java zhangyi
     http://acm.hdu.edu.cn/showproblem.php?pid=1085
     Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 12778    Accepted Submission(s): 5728


    Problem Description
    We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of China! 
    “Oh, God! How terrible! ”




    Don’t be so afraid, guys. Although he hides in a cave of Hang Zhou, he dares not to go out. Laden is so bored recent years that he fling himself into some math problems, and he said that if anyone can solve his problem, he will give himself up! 
    Ha-ha! Obviously, Laden is too proud of his intelligence! But, what is his problem?
    “Given some Chinese Coins (硬币) (three kinds-- 1, 2, 5), and their number is num_1, num_2 and num_5 respectively, please output the minimum value that you cannot pay with given coins.”
    You, super ACMer, should solve the problem easily, and don’t forget to take $25000000 from Bush!
     


    Input
    Input contains multiple test cases. Each test case contains 3 positive integers num_1, num_2 and num_5 (0<=num_i<=1000). A test case containing 0 0 0 terminates the input and this test case is not to be processed.
     


    Output
    Output the minimum positive value that one cannot pay with given coins, one line for one case.
     


    Sample Input
    1 1 3
    0 0 0
     


    Sample Output
    4
     
     */


    /*
     * 大致题意:给你面值为1,2,5的硬币,不能组成最小的面值为?
     * 

     */



    import java.io.InputStreamReader;
    import java.util.Scanner;
    
    
    public class Main {//DP
    	public static void main(String[] args) {
    		Scanner input=new Scanner(new InputStreamReader(System.in));
    		while(true){
    			int a=input.nextInt();
    			int b=input.nextInt();
    			int c=input.nextInt();
    			if(a+b+c==0)
    				break;
    			Mon m[]=new Mon[a+b*2+c*5+1];
    			for(int i=1;i<=a+b*2+c*5;i++)
    				m[i]=new Mon();
    			m[0]=new Mon(a,b,c);
    			m[0].ok=true;
    			for(int i=0;i<=a+b*2+c*5;i++){
    				if(m[i].ok){
    					if(m[i].a>0){
    						m[i+1].a=m[i].a-1;
    						m[i+1].b=m[i].b;
    						m[i+1].c=m[i].c;
    						m[i+1].ok=true;
    					}
    					if(m[i].b>0){
    						m[i+2].a=m[i].a;
    						m[i+2].b=m[i].b-1;
    						m[i+2].c=m[i].c;
    						m[i+2].ok=true;
    					}
    					if(m[i].c>0){
    						m[i+5].a=m[i].a;
    						m[i+5].b=m[i].b;
    						m[i+5].c=m[i].c-1;
    						m[i+5].ok=true;
    					}
    				}
    			}
    			boolean okk=true;
    			for(int i=1;i<=a+b*2+c*5;i++){
    				if(!m[i].ok)
    				{
    					System.out.println(i);
    					okk=false;
    					break;
    				}
    			}
    			if(okk)
    				System.out.println(a+b*2+c*5+1);
    		}
    	}
    }
    class Mon{
    	boolean ok=false;
    	int a,b,c;
    	public Mon(int a, int b, int c) {
    		this.a = a;
    		this.b = b;
    		this.c = c;
    	}
    	Mon(){};
    }


  • 相关阅读:
    (转)Entity Framework 缓存处理与日志监控,(非常重要的技术)
    (转)6步确保 windbg 成功调试 .net
    (转)十天内掌握线性代数:惊人的超速学习实验
    (转)创业需要知道的13句话
    今年阅读书籍计划,C++之STL篇
    不靠广告也盈利:移动应用掘金7大案例剖析(转)
    常用JS操作(复选框、单选框、下拉框)
    Windows系统直接运行jar
    修改打开方式的程序列表中列出程序的名称
    ora12514错误,TNS:监听程序当前无法识别链接描述符中请求的服务
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3429041.html
Copyright © 2011-2022 走看看