1class Solution { // YAA2public:3int solve(vector<int> &nums, int target, int idx, unordered_map<string, int> &dp) {4if (idx == nums.size()) {5if (target == 0) {6return 1;7}8return 0;9}10string key = to_string(idx) + " " + to_string(target);11if (dp.find(key) != dp.end()) {12return dp[key];13}14// +15int x = solve(nums, target - nums[idx], idx + 1, dp);16// -17int y = solve(nums, target + nums[idx], idx + 1, dp);18// sum19return dp[key] = x + y;20}21int findTargetSumWays(vector<int> &nums, int target) {22unordered_map<string, int> dp;23return solve(nums, target, 0, dp);24}25};