题目描述
blablabla
出现问题 上面输入的i是从0 开始 下面是从i开始导致程序错误
样例
import java.util.*;
class Main{
static int N= 1010;
static int n,m;
static int [] v=new int [N];
static int [] w=new int [N];
static int [] f=new int [N];
public static void main(String [] args){
Scanner in=new Scanner (System.in);
n=in.nextInt();
m=in.nextInt();
for(int i=1;i<=n;i++){
v[i]=in.nextInt();
w[i]=in.nextInt();
}
//开始写状态转移方程
for(int i=1 ;i<=n; i++){
for (int j=m; j>= v[i];j--){
f[j]=Math.max(f[j],f[j-v[i]]+w[i]);
}
}
System.out.println(f[m]);
}
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
你存的value是从i=0开始 下面dp枚举是从i=1开始枚举物品, 这个细分改成int i = 1 , … 就行了
for(int i=0;i<n;i++){
v[i]=in.nextInt();
w[i]=in.nextInt();
感谢