输入的第一行有两个整数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]);
}
}
}