for(int i = 0; i < n; i++) {
for(int j = all; j >= arr[i]; j--) {
if (dp[j - arr[i]] ) dp[j] = true;
}
}
for(int i = n - 1; i >= 0; i++) {
for(int j = all; j >= arr[i]; j--) {
if (dp[j - arr[i]] ) dp[j] = true;
}
}
知道是01背包问题两个for一个正序遍历一个倒叙遍历来一次,dp是boolean类型的数组,可以凑就为true。
过是过了,但我凑出来的重量其实和题目要求的不一样只是个数一样。感觉怪怪的