输入的第一行有两个整数T(1 <= T <= 1000)和M(1 <= M <= 100),T代表总共能够用来采药的时间,M代表山洞里的草药的数目。 接下来的M行每行包括两个在1到100之间(包括1和100)的的整数,分别表示采摘某株草药的时间和这株草药的价值。
可能有多组测试数据,对于每组数据, 输出只包括一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。
70 3 71 100 69 1 1 2
3
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { int t=sc.nextInt(); int m=sc.nextInt(); int []time=new int[m]; int []value=new int[m]; for(int i=0;i<m;i++) { time[i]=sc.nextInt(); value[i]=sc.nextInt(); } int []dp=new int[t+1];//针对时间 for(int i=0;i<m;i++) {//针对每个草药 for(int j=t;j>=time[i];j--) { dp[j]=Math.max(dp[j], dp[j-time[i]]+value[i]); } } System.out.println(dp[t]); } } }