Backpack V

public class Solution {
    /**
     * @param nums: an integer array and all positive numbers
     * @param target: An integer
     * @return: An integer
     */
		public int backPackV(int[] A, int m) {
			int n = A.length;
			int i, j;
			int[][] f = new int[n + 1][m + 1];
			f[0][0] = 1;
			for (i = 1; i <= m; ++i) {
				f[0][i] = 0;
			}
			
			for (i = 1; i <= n; ++i) {
				for (j = 0; j <= m; ++j) {
					//not using A[i - 1]
					f[i][j] = f[i - 1][j];
					//using A[i - 1]
					if (j >= A[i - 1]) {
						f[i][j] += f[i - 1][j - A[i - 1]];
					}
				}
			}
			return f[n][m];
		}
}

最后更新于

这有帮助吗?