递归参数中递增运算符的使用
backtrack(k,n,sum,i+1);
backtrack(k,n,sum,i++);
在 C++ 中,递增运算符 i++ 和表达式 i+1 之间有显著的区别:
i++是后置递增运算符,表示先使用i的当前值,然后将i加 1。i+1是一个简单的算术运算,返回i的当前值加 1,但不改变i的值。
backtrack(k, n, sum, i + 1); // 正确, 传递 i 的下一值,但不改变 i 的值
backtrack(k, n, sum, i++); // 错误, 传递当前 i 的值,然后 i 自增1
详细描述
backtrack(k, n, sum, i + 1);这里传递了i的值加 1,但是i本身的值不会改变。所以,这并不会对当前递归状态下的i产生影响。backtrack(k, n, sum, i++);在这种情况下,i++是后置递增运算符,这意味着当前函数调用传递的是i的原始值,然后i自增 1。这可能是不想要的效果,特别是在递归函数调用中,因为它在修改i之后继续使用它,可能会导致索引管理混乱。
正确的方法:
一般来说,在递归和回溯中,你希望传递给下一层递归的是当前索引的下一个值而不是原始值并自增。所以,使用 i + 1 更加合适。
案例:
class Solution {
public:vector<int> path;vector<vector<int>> res;void backtrack(int k,int n,int sum,int start){if(path.size()==k){if(sum==n){res.push_back(path);}return;}for(int i=start;i<=9;i++){sum+=i;path.push_back(i);backtrack(k,n,sum,i++);sum-=i;path.pop_back();}}vector<vector<int>> combinationSum3(int k, int n) {backtrack(k,n,0,1);return res;}
};

通过调试发现:


时间和空间复杂度

相关文章:
递归参数中递增运算符的使用
backtrack(k,n,sum,i1); backtrack(k,n,sum,i); 在 C 中,递增运算符 i 和表达式 i1 之间有显著的区别: i 是后置递增运算符,表示先使用 i 的当前值,然后将 i 加 1。i1 是一个简单的算术运算,返回 i 的当前值加 1&…...
Python功能制作之获取CSDN所有发布文章的对应数据
大家好,今天我要分享的是一个实用的Python脚本,它可以帮助你批量获取CSDN博客上所有发布文章的相关数据,并将这些数据保存到Excel文件中。此外,脚本还会为每篇文章获取一个质量分,并将这个分数也记录在Excel中。让我们…...
Backend - C# 基础知识
目录 一、程序结构 (一)内容 1. 命名空间声明 Namespace 2. 一个 class 类 3. class 方法(类方法) 4. class 属性 5. 一个 main 方法(程序入口) 6. 语句&表达式 7. 注释 (二)举例…...
HTML5新增的input元素类型:number、range、email、color、date等
HTML5 大幅度地增加与改良了 input 元素的种类,可以简单地使用这些元素来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 到目前为止,大部分浏览器都支持 input 元素的种类。对于不支持新增 input 元素的浏览器,input 元素被统一…...
00 Debian字符界面如何支持中文
作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian字符界面如何支持中文 《傅老师Debian知识库系列之00》——原创 前言 傅老师Debian知识库特点: 1、拆解Debian实用技能; 2、…...
以太网中的各种帧结构
帧结构(Ethernet Frame Structure)介绍 以太网信号帧结构(Ethernet Signal Frame Structure),有被称为以太网帧结构,一般可以分为两类 —— 数据帧和管理帧。 按照 IEEE 802.3,ISO/IEC8803-3 …...
C++入门基础题:数组元素逆序(C++版互换方式)
1.题目: 数组元素逆置案例描述: 请声明一个5个元素的数组,并且将元素逆置. (如原数组元素为:1,3,2,5,4;逆置后输出结果为:4,5,2,3,1) 2.图解思路: 3.代码演示: #include<iostream>using namespace std;int main(){int a…...
3款自己电脑就可以运行AI LLM的项目
AnythingLLM、LocalGPT和PrivateGPT都是与大语言模型(LLM)相关的项目,它们允许用户在本地环境中与文档进行交互,但它们在实现方式和特点上存在一些差异。AnythingLLM使用Pinecone和ChromaDB来处理矢量嵌入,并使用OpenA…...
各云厂商取消免费一年期SSL证书
目录 第一次削减SSL证书有效期: SSL证书单次签发有效期可能再次削减: 目前市场趋势显现: 各类削减政策意味着什么: 上有政策、下有对策—怎么实现超长SSL证书有效期: 如何申请全自动化部署的SSL证书:…...
自动化测试高级控件交互方法:TouchAction、触屏操作、点按,双击,滑动,手势解锁!
在自动化测试领域中,TouchAction 是一种非常强大的工具,它允许我们模拟用户在设备屏幕上的各种触摸事件。这种模拟不仅限于简单的点击操作,还包括滑动、长按、多点触控等复杂的手势。 点按与双击 点按和双击是触屏设备上最基本的操作之一。…...
leetcode165.解密数字
题目表述: 这道题目和斐波那契数列以及跳台阶问题十分相似。 斐波那契数列:0、1、1、2、3、5, 8、13、21、34 …… leetcode跳台阶问题:1、1、2、3、5, 8、13、21、34....... 这类题目的特点都是第N项的结果等于前两项的和。 但是解密数…...
对为什么react需要时间分片,vue3不需要的浅学习
1、时间分片 时间分片指在让应用在cpu进行大量计算时也能与用户交互,但时间分片只能对大量cpu计算进行优化,无法优化复杂DOM操作,因为要确保用户正在操作的界面是最新。 web卡顿的场景: 1、cpu计算量不大,但dom操作…...
电脑干货分享 · 删除资源管理器导航栏 OneDrive 及 3D 对象
Win10资源管理器的左侧导航栏默认有一个OneDrive的项,但由于微软龟速的原因,OneDrive在国内基本很少有人使用,我们动手给它KO了! 网上有很多这类的教程,但都是要手动修改注册表,对于小白来说,有…...
无人机之穿越机注意事项篇
一、检查设备 每次飞行前都要仔细检查穿越机的每个部件,确保所有功能正常,特别是电池和电机。 二、遵守法律 了解并遵循你所在地区关于无人机的飞行规定,避免非法飞行。 三、评估环境 在飞行前检查周围环境,确保没有障碍物和…...
防御课第一次作业第一天笔记整理
网络安全概述 网络安全(Cyber Security)是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断 中国网络安全市场近年来只增不…...
Git协作
文章目录 Git协作冲突冲突的发生情况解决冲突如何处理冲突 1 分支1.1 什么是Git分支1.2 创建分支 2 切换分支2.1 指向分支2.2 暂存分支切换分支与未提交更改的处理使用 Stash 临时保存更改Stash 的工作原理:场景设定使用 Git Stash 3 远程分支3.1 快进合并快进合并的…...
Three.js机器人与星系动态场景(四):封装Threejs业务组件
实际在写业务的时候不会在每个组件里都写几十行的threejs的初始化工作。我们可以 将通用的threejs的场景、相机、render、轨道控制器等进行统一初始化。同时将非主体的函数提到组件外部,通过import导入进组件。将业务逻辑主体更清晰一些。下面的代码是基于reactthre…...
亚马逊云科技 Amazon Bedrock 构建 AI 应用体验
前言 大模型应用发展迅速,部署一套AI应用的需求也越来越多,从头部署花费时间太长,然而亚马逊科技全托管式生成式 AI 服务 Amazon Bedrock,Amazon Bedrock 简化了从基础模型到生成式AI应用构建的复杂流程,为客户铺设了…...
程序员标准简历模板
链接: https://pan.baidu.com/s/1yMXGSSNba15b9hMXjA39aA?pwdb4ev 提取码: b4ev 3年工作经验简历 链接: https://pan.baidu.com/s/1OO7n1lRL6AkhejxYC9IyDA?pwdfmvv 提取码: fmvv 优秀学员简历 链接: https://pan.baidu.com/s/106Vkw_ulOInI47_5mDySSg?pwduudc 提取码: uu...
物联网设计竞赛_10_Jetson Nano中文转汉语语音
在windows中pyttsx3可以让汉字文本输出中文语音,但是在jetson上只能用英文说话 import pyttsx3def hanyu(test):engine pyttsx3.init()rate engine.getProperty(rate)engine.setProperty(rate,125)engine.say(test)engine.runAndWait() hanyu(你好) #engine.save…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
