动态规划:01背包问题

import java.util.*;

public class Main {
    static int []dp;
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
       int n= sc.nextInt();//商品个数
       int V=sc.nextInt(); //背包容量
       int []w=new int[n]; //物品价值
       int []v=new int[n]; //物品体积
       dp=new int[V+1];
        for (int i = 0; i < n; i++) {
            v[i]=sc.nextInt();
            w[i]=sc.nextInt();
        }
        //先遍历物品后遍历背包,倒序遍历
        for (int i = 0; i <n; i++) {
            for (int j = V; j >=v[i] ; j--) {
                dp[j]=Math.max(dp[j],dp[j-v[i]]+w[i]);
            }
        }
        System.out.println(dp[V]);
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务