本文主要是介绍题目 2131: T1267-01背包问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
一个旅行者有一个最多能装 M 公斤的背包,现在有 n 件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为C1,C2,...,Cn,求旅行者能获得最大总价值。
代码:
package lanqiao;import java.math.BigInteger;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] w = new int[202];int[] c = new int[202];int[][] arr = new int[202][202];int m = sc.nextInt(); //背包容量int n = sc.nextInt(); //物品数量for(int i = 1;i <= n;i ++){w[i] = sc.nextInt();c[i] = sc.nextInt();}for(int i = 1;i <= n;i ++){for(int j = 1;j <= m;j ++){if(w[i] > j){arr[i][j] = arr[i - 1][j];}else{arr[i][j] = Math.max(arr[i - 1][j],arr[i - 1][j - w[i]] + c[i]);}}}System.out.println(arr[n][m]);}
}
这篇关于题目 2131: T1267-01背包问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!