leetcode 494 目标和

一、题目描述

二、解题思路

整体思路

画出本题的决策树,可以采用回溯的方法来解决这个问题。

具体思路

(1)函数功能:dfs函数用于统计从start开始,表达式值为target的表达式的所有个数;

(2)递归出口:当start等于nums.size()时,若表达式的值为target,则ret++。不论表达式的值是否为target,都需要返回;

(3)函数体:当前位置要么选择'+',要么选择'-',根据这两种情况来解决

<1>选择'+',path+=nums[i],dfs处理后一个位置,处理完后恢复现场;

<2>选择'-',path+=nums[i],dfs处理后一个位置,处理完后恢复现场;

注意只有修改了全局变量的值,才需要进行回溯恢复现场。

三、代码实现

cpp 复制代码
class Solution {
    int ret=0;
    int path=0;
public:
    int findTargetSumWays(vector<int>& nums, int target) {
        dfs(nums,0,target);
        return ret;
    }
    void dfs(vector<int>& nums,int start,int target){
        //递归出口
        if(start==nums.size()){
            if(path==target){
                ret++;
            }
            return ;
        }
            //选'+'
            path+=nums[start];
            dfs(nums,start+1,target);
            //恢复现场
            path-=nums[start];

            //选'-'
            path-=nums[start];
            dfs(nums,start+1,target);
            //恢复现场
            path+=nums[start];
    }
};
相关推荐
橘子真甜~19 分钟前
C/C++ Linux网络编程5 - 网络IO模型与select解决客户端并发连接问题
linux·运维·服务器·c语言·开发语言·网络·c++
余俊晖1 小时前
英伟达开源多模态视觉语言模型-Nemotron Nano V2 VL模型架构、训练方法、训练数据
人工智能·算法·语言模型·自然语言处理·多模态
2501_941111461 小时前
C++中的原型模式
开发语言·c++·算法
高洁011 小时前
国内外具身智能VLA模型深度解析(2)国外典型具身智能VLA架构
深度学习·算法·aigc·transformer·知识图谱
一只会写代码的猫1 小时前
C# 性能优化:从垃圾回收到多线程并发
jvm·算法
慢慢向上的蜗牛1 小时前
微软vcpkg包管理工具如何使用?
c++·microsoft·vcpkg·跨平台编译
wangjialelele2 小时前
详解mysql命令行操作与语言链接
c语言·数据库·c++·mysql·oracle
学生小羊2 小时前
A. C05.L08.贪心算法入门
算法·贪心算法
AndrewHZ2 小时前
【图像处理基石】图像连通域计算:原理、算法实现与应用全解析
图像处理·算法·计算机视觉·cv·算法原理·视觉算法·连通域计算
Dev7z2 小时前
基于Matlab遗传算法与蚁群算法的风光储并网微电网容量优化研究
算法·matlab·蚁群算法·多能源微电网