zoukankan      html  css  js  c++  java
  • Java实现 洛谷 采药

    题目描述
    辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”

    如果你是辰辰,你能完成这个任务吗?

    Return Top
    输入输出格式
    输入格式:

    输入文件medic.in的第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),用一个空格隔开,T代表总共能够用来采药的时间,M代表山洞里的草药的数目。接下来的M行每行包括两个在1到100之间(包括1和100)的整数,分别表示采摘某株草药的时间和这株草药的价值。

    输出格式:

    输出文件medic.out包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。

    Return Top
    输入输出样例
    输入样例#1:
    70 3
    71 100
    69 1
    1 2

    输出样例#1:
    3
    Return Top
    说明
    对于30%的数据,M <= 10;

    对于全部的数据,M <= 100。

    NOIP2005普及组第三题

    import java.util.Scanner;
    //01背包
    
    public class caiyao {
    	public static void main(String[] args) {
    		Scanner sc =new Scanner(System.in);
    		int time =sc.nextInt();
    		int n = sc.nextInt();
    		int [] shijian  = new int [n+1];
    		int [] quanzhi  = new int [n+1];
    		for (int i = 1; i < quanzhi.length; i++) {
    			shijian[i]=sc.nextInt();
    			quanzhi[i]=sc.nextInt();
    		}
    		int [] [] dp = new int [n+1][time+1];
    		for (int i = 1; i < n+1; i++) {
    			for (int j = 1; j <time+1; j++) {
    				if(j>=shijian[i]){
    					dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-shijian[i]]+quanzhi[i]);
    				}
    				else{
    					dp[i][j]=dp[i-1][j];
    				}
    			}
    		}
    		System.out.println(dp[n][time]);
    	}
    
    }
    
    
  • 相关阅读:
    JS LeetCode 1423. 可获得的最大点数简单题解
    SpringBoot 学集 (第六章) Docker
    Linux 学记 (第三章)
    Linux 学记 (第二章)
    Linux 学记 (第一章)
    SpringBoot 学集 (第五章) Web开发续
    SpringBoot 学集 (第四章)Web开发
    SpringBoot 学集 (第三章) 日志框架
    SpringBoot 学集 (第二章) 配置文件
    SpringBoot 学集 (第一章)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948945.html
Copyright © 2011-2022 走看看