01背包问题
2017-10-15 15:21
288 查看
public class test26 { public static void main(String[] args) { int m = 10; int n = 3; int[] w = {0, 3, 4, 5 }; int[] p = {0, 4, 5, 6 }; int c[][] = BackPack_Solution(m, n, w, p); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { System.out.print(c[i][j] + "\t"); if (j == m) { System.out.println(); } } } } public static int[][] BackPack_Solution(int m, int n, int[] w, int[] p) { int c[][] = new int[n + 1][m + 1]; for (int i = 0; i < n + 1; i++) { c[i][0] = 0; } for (int i = 0; i < m + 1; i++) { c[0][i] = 0; } for (int i = 1; i < n + 1; i++) { for (int j = 1; j < m + 1; j++) { if ((j - w[i]) >= 0) { c[i][j] = Math.max(c[i - 1][j - w[i]] + p[i], c[i - 1][j]); }else{ c[i][j] = c[i-1][j]; } } } return c; } }