AcWing 2. 01背包问题

题目描述

解题思路:

相关代码:

复制代码
import java.util.Scanner;
public class Main {

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        /*
        *  背包问题的物品下标最好从1开始。
        * */
        /*定义一f[i][j]数组,i表示的是前i个物品,j
          表示体积不超过j,值表示最大价值
         */
        int f[][] = new int[1010][1010];
        int v[] = new int[1010];
        int w[] = new int[1010];

        int N = scanner.nextInt();
        int V = scanner.nextInt();

        for(int i=1;i<=N;i++){
            v[i] = scanner.nextInt();
            w[i] = scanner.nextInt();
        }

        for(int i=1;i<=N;i++)
            for(int j=0;j<=V;j++)
                if(j>=v[i]) f[i][j] = Math.max(f[i-1][j],f[i-1][j-v[i]]+w[i]);
                else f[i][j] = Math.max(f[i-1][j],f[i][j]);

        System.out.println(f[N][V]);
    }
}

如果以物品的数量来看待问题,还有另一种解法

相关代码

复制代码
import java.util.Scanner;

public class Main {

    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        /*
        *  背包问题的物品下标最好从1开始。
        * */
        /*定义一f[i][j]数组,i表示的是前i个物品,j
          表示体积不超过j,值表示最大价值
         */
        int f[][] = new int[1010][1010];
        int v[] = new int[1010];
        int w[] = new int[1010];

        int N = scanner.nextInt();
        int V = scanner.nextInt();

        for(int i=1;i<=N;i++){
            v[i] = scanner.nextInt();
            w[i] = scanner.nextInt();
        }

        for(int i=1;i<=N;i++)
            for(int j=0;j<=V;j++)
                for(int k=0;k*v[i]<=j&&k<=1;k++)
                f[i][j] = Math.max(f[i][j],f[i-1][j-k*v[i]]+k*w[i]);
        System.out.println(f[N][V]);
    }
}
相关推荐
sprite_雪碧4 分钟前
3.2 最大公约数(GCD)&斐波那契数列 & 素数相关(机试高频数学考点)
算法
2301_776508726 分钟前
C++中的职责链模式实战
开发语言·c++·算法
sqyno1sky8 分钟前
C++中的空对象模式
开发语言·c++·算法
yunyun3212314 分钟前
动态库热加载技术
开发语言·c++·算法
88号技师15 分钟前
2026年3月一区SCI-B样条曲线优化算法B-spline curves optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
dapeng287015 分钟前
C++中的享元模式实战
开发语言·c++·算法
jing-ya17 分钟前
day 60 图论part11
java·数据结构·算法·图论
沐雲小哥18 分钟前
CenterPoint算法改进的tricks
算法
沐雲小哥21 分钟前
Sparse4D算法的tricks
算法
沉鱼.4422 分钟前
树的题目集
数据结构·算法