穷举vs暴搜vs深搜vs回溯vs剪枝系列一>

题目:


解析:

决策树:


代码设计:


代码:

写法一:path为全局变量

java 复制代码
private int ret,path,aim;
    public int findTargetSumWays(int[] nums, int target) {
        aim = target;
        dfs(nums,0);
        return ret;
    }
    
    private void dfs(int[] nums, int pos){
        if(pos == nums.length){
            if(path == aim) ret++;
            return;
        } 

        //添加 '+'
        path += nums[pos];
        dfs(nums,pos+1);
        path -= nums[pos];//回溯

        //添加 '-'
        path -= nums[pos];
        dfs(nums,pos+1); 
        path += nums[pos];//回溯
    }

写法二:path作为参数

java 复制代码
private int ret,aim;
    public int findTargetSumWays(int[] nums, int target) {
        aim = target;
        dfs(nums,0,0);
        return ret;
    }
    
    private void dfs(int[] nums, int pos,int path){
        if(pos == nums.length){
            if(path == aim) ret++;
            return;
        }

        //添加 '+'
        dfs(nums, pos+1, path + nums[pos]);

        //添加 '-'
        dfs(nums, pos+1, path - nums[pos]); 
    }
相关推荐
en.en..8 小时前
Linux fork() 工作原理
数据结构·算法
地平线开发者8 小时前
bevformer算法模型详细解读
算法
liliangcsdn9 小时前
ICIR权重矩阵如何加权标准化为综合因子
算法
SDWAN_Cheap9 小时前
SD-WAN智能选路技术的算法与实现机制
算法·php·sdwan
不会就选b10 小时前
数据结构之树&&二叉树(二)
数据结构·算法
渡之10 小时前
ArduPilot (APM)滤波器之SlewLimiter 深度解析
算法
zander25811 小时前
LeetCode 1143. 最长公共子序列
开发语言·python·算法
Sumerking11 小时前
llc_control.c 专项评审(v3 更新版)
c语言·开发语言·算法·obc
软行11 小时前
LeetCode 每日一题 3876. 构造奇偶一致的数组 II
c++·算法·leetcode
绿算技术11 小时前
Solidigm联合绿算技术共同发布《面向 SOHO AI 推理的存储扩展方案》技术白皮书
人工智能·科技·算法·架构·spark