DFS——Target Sum

来源:互联网 发布:开发一个软件 编辑:程序博客网 时间:2024/05/24 04:51

问题描述:

给出一个非负整数的列表,a1,a2,...,an和目标,现在有2个符号+和 - 。 对于每个整数,你应该从+和 - 中选择一个作为其新符号。找出有多少种方式来分配符号来使整数等于目标值S.

解题思路:

对于列表中的每个元素,都有两种选择,通过递归,穷尽2的n次方种可能。如果最后sum为0,则将result++,否则继续尝试其他可能。

源代码:

class Solution {
public:
    int findTargetSumWays(vector<int>& nums, int S) {
        int result=0;
        find(nums,-S,0,result); 
        return result;
    }
    void find(vector<int>& nums, int sum,int count,int& result) {
        if(count==nums.size()) 
        {
            if(sum == 0) result++;
            return ;
        }
        find(nums,sum+nums[count],count+1,result);
        find(nums,sum-nums[count],count+1,result);
    }
};

0 0
原创粉丝点击