This commit is contained in:
youngyangyang04
2020-11-25 08:59:48 +08:00
parent e08fd0eea7
commit fe212cf1ff
20 changed files with 284 additions and 91 deletions

View File

@ -0,0 +1,32 @@
// 这道题小细节很多
// 感觉这道题可以用回溯法啊
// 转为01 背包 思路不好想啊
// dp数组难在如何初始化
// dp 数组 通常比较长
```
class Solution {
public:
int findTargetSumWays(vector<int>& nums, int S) {
int sum = 0;
for (int i = 0; i < nums.size(); i++) sum += nums[i];
if (S > sum) return 0; // 此时没有方案
if ((S + sum) % 2) return 0; // 此时没有方案两个int相加的时候要各位小心数值溢出的问题
int bagSize = (S + sum) / 2;
int dp[1001] = {1};
//for (int i = 0; i < nums.size(); i++) dp[nums[i]] = 1;
for (int i = 0; i < nums.size(); i++) {
for (int j = bagSize; j >= nums[i]; j--) {
if (j - nums[i] >= 0) dp[j] += dp[j - nums[i]];
}
//for (int k = 0; k <= bagSize; k++) {
// cout << dp[k] << " ";
//}
//cout << endl;
}
return dp[bagSize];
}
};
```