89. K数之和
给定
n
个不同的正整数,整数
k
(
k
<=
n
)以及一个目标数字
target
。
在这
n
个数里面找出
k
个数,使得这
k
个数的和等于目标数字,求问有多少种方案?
样例
样例1
输入:
List = [1,2,3,4]
k = 2
target = 5
输出: 2
说明: 1 + 4 = 2 + 3 = 5
样例2
输入:
List = [1,2,3,4,5]
k = 3
target = 6
输出: 1
说明: 只有这一种方案。 1 + 2 + 3 = 6
public class Solution {
/**
* @param A: An integer array
* @param k: A positive integer (k <= length(A))
* @param target: An integer
* @return: An integer
*/
public int kSum(int[] A, int k, int target) {
int n = A.length;
if (n == 0) return 0;
int[][][] f = new int[n + 1][k + 1][target + 1];
f[0][0][0] = 1;
for (int i = 1; i <= n; i++) {
for (int j = 0; j <= k; j++) {
for (int t = 0; t <= target; t++) {
// if (i == 0)
// f[0][j][t] = 0;
// else {
f[i][j][t] = f[i - 1][j][t];
if (t - A[i - 1] >= 0 && j > 0)
f[i][j][t] += f[i - 1][j - 1][t - A[i - 1]];
// }
}
}
}
return f[n][k][target];
}
}