代码随想录27期|Python|Day24|回溯法|理论基础|77.组合

图片来自代码随想录

回溯法题目目录

理论基础

定义

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 

回溯是递归的副产品,只要有递归就会有回溯。回溯函数也就是递归函数,指的都是一个函数

基本问题

  • 组合问题(无序):N个数里面按一定规则找出k个数的集合
  • 切割问题:一个字符串按一定规则有几种切割方式
  • 子集问题:一个N个数的集合里有多少符合条件的子集
  • 排列问题(有序):N个数按一定规则全排列,有几种排列方式
  • 棋盘问题:N皇后,解数独等等

 解题模版

所有回溯问题都可以抽象为一个树问题。

返回值和参数

一般返回值都是void。参数需要根据实际情况确定。

void backtracking(参数)

终止条件

类似树的结构,一般是找到叶子节点之后返回,必要的时候需要保存结果。

if (终止条件) {存放结果;return;
}

遍历过程

for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表); // 递归回溯,撤销处理结果
}

需要注意集合大小和分支数量是对应的。以及在回溯过程当中在每一次回溯之后需要撤销这一步的处理内容。

77. 组合

class Solution(object):def combine(self, n, k):""":type n: int:type k: int:rtype: List[List[int]]"""res = []self.backtracking(n, k, 1, [], res)return resdef backtracking(self, n, k, start_idx, path, res):# 终止条件if len(path) == k:res.append(path[:])  # 加入resreturn  # 回溯for i in range(start_idx, n + 1):path.append(i)self.backtracking(n, k, i + 1, path, res)  # 起始位置变成i+1path.pop()  # 回溯

 第24天完结🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指纹识别软件安装包下载

微信关注公众号:1111的博客,回复“指纹识别”,即可获取指纹识别安装包的下载链接。本软件的版本为指纹识别2.0应用程序,在安装的过程中有以下几个注意点【一定要看】:安装完成之后直接运行:指纹识别.exe文件…

python获取当前进程id_从python进程名中获取进程id

我试图在进程名的帮助下获取pid。我尝试过this解决方案。但它给了我这个错误Traceback (most recent call last):File "pidName.py", line 10, in getPIDs("safari")File "pidName.py", line 4, in getPIDspidlist map(int, s.check_output([&q…

三大框架题目整合考试题(含详解)

三大框架题目整合考试题(含详解) 1.在Hibernate的关联关系映射配置中,下列选项对于inverse说法错误的是(bd)。 (选择二项) A. inverse属性指定了关联关系中的方向 //inverse设置为false,则为主动方,由主动方负责维护关联关系,默…

2016蓝桥杯省赛---java---B---2(生日蜡烛)

题目描述 生日蜡烛 思路分析 代码实现(方式一) package com.atguigu.TEST;class Main{public static void main(String[] args) {int sum236;int a0;//记录开始过生日的年龄for (int i 0; i < 100; i) {for (int j i; j < 100; j) {aaj;if(asum){System.out.printl…

ntp时间同步会导致mysql关闭吗?_ntp时间同步问题解决方法

http://www.pool.ntp.org/zone/asia0.asia.pool.ntp.org1.asia.pool.ntp.org2.asia.pool.ntp.org3.asia.pool.ntp.org2.1 注册表信息修改PDC配置外部时间源设置#config external NTP serverw32tm.exe /config /manualpeerlist:”0.asia.pool.ntp.org,1.asia.pool.ntp.org,2.asi…

javaSE视频教程正式启动

亲爱的小伙伴们&#xff1a;经过激烈的思想斗争之后&#xff0c;我决定了&#xff0c;决定什么呢&#xff1f;决定给大家送福利了&#xff01;对&#xff0c;是送福利了&#xff01;送什么福利呢&#xff1f;送教程&#xff0c;javaSE的教程免费送&#xff0c;主要还是由我来讲…

快速搭建本地 .NET Core 运行时调试环境

需要的软件环境&#xff1a; Oracle VM VirtualBoxCentOS 7llvm lldb 3.6.0 (3.5.0我试过 dumpobj时候一直报无效参数 Invalid parameter T_T) 先在VirtualBox创建新虚机&#xff1a;一路 Next &#xff0c;文件位置可以自定义下(默认是在Users/当前用户/.. 目录下)创建完选在设…

零配置 之 Spring 概述

转载自 【第十二章】零配置 之 12.1 概述 ——跟我学spring3 12.1 概述 12.1.1 什么是零配置 在SSH集成一章中大家注意到项目结构和包结构是不是很有规律&#xff0c;类库放到WEB-INF/lib文件夹下&#xff0c;jsp文件放到WEB-INF/jsp文件夹下&#xff0c;web.xml需要放到…

背包问题+图解

图解 代码实现 package com.atguigu.dynamic;/*** 创建人 wdl* 创建时间 2021/4/3* 描述*/ public class KnapsackProblem {public static void main(String[] args) {int[] w{1,4,3};//物品的重量int[] val{1500,3000,2000};//物品的价值 这里的val[i]就是前面的v[i]int m4;/…

mysql预编译语句拼接查询_SQL语句预编译(查询)

SQL语句预编译SQL语句预编译能预防SQL注入提高安全性&#xff0c;是因为SQL语句在程序运行前已经进行了预编译&#xff0c;在程序运行时第一次操作数据库之前&#xff0c;SQL语句已经被数据库分析&#xff0c;编译和优化&#xff0c;对应的执行计划也会缓存下来并允许数据库以参…

java循环结构教程

循环的语法我发一下&#xff1a;while( 布尔表达式 ) {//循环内容}do {//代码语句}while(布尔表达式);for(初始化; 布尔表达式; 更新) {//代码语句}今天录制了一下java 的循环结构视频&#xff0c;包括while,do while以及for循环&#xff0c;时间有点长&#xff0c;所以大家看的…

想和你一起为 Visual Studio 庆祝20岁生日

Visual Studio Live 倒计时开始…… 1997年1月28日&#xff0c;Visual Stuido 97正式推出&#xff0c;她将Visual Basic、Visual C、Visual J、Visual Foxpro、Visual InterDev聚合在一起&#xff0c;并且这个让人着迷的“小妖精”&#xff0c;统揽天下20年尚未有退位的意思。 …

Spring 基于 Java 的配置

转载自 Spring 基于 Java 的配置 基于 Java 的配置 到目前为止&#xff0c;你已经看到如何使用 XML 配置文件来配置 Spring bean。如果你熟悉使用 XML 配置&#xff0c;那么我会说&#xff0c;不需要再学习如何进行基于 Java 的配置是&#xff0c;因为你要达到相同的结果&am…

2016蓝桥杯省赛---java---B---3(凑算式)

题目描述 凑算式 思路分析 通分 代码实现 package com.atguigu.TEST;class Main{static int a[]{1,2,3,4,5,6,7,8,9};static int ans;public static boolean check(){int xa[3]*100a[4]*10a[5];int ya[6]*100a[7]*10a[8];if((a[1]*ya[2]*x)%(y*a[2])0&&a[0](a[1…

java如何连接mysql_Java如何连接数据库

Java如何连接数据库1.加载驱动Class.forname(ClassName);2.建立数据库连接使用DriverManager类的getConnection()静态方法来获取数据库连接对象&#xff0c;其语法格式如下所示:Connection connDriverManager.getConnection(String url,String userName,String password);其中u…

Spring 基于注解的配置

转载自 Spring 基于注解的配置 基于注解的配置 从 Spring 2.5 开始就可以使用注解来配置依赖注入。而不是采用 XML 来描述一个 bean 连线&#xff0c;你可以使用相关类&#xff0c;方法或字段声明的注解&#xff0c;将 bean 配置移动到组件类本身。 在 XML 注入之前进行注解…

微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)

摘录网上的“.NET 15周年”信息如下&#xff1a; 微软的 .NET 框架本周迎来了 15 岁生日。.NET 的第一个版本在 2002 年 2 月 13 日作为的 Visual Studio.NET 的一部分首次公开亮相。过去 15 年&#xff0c;.NET 框架从一个流行的闭源软件开发平台&#xff0c;变成了一个开源的…

分治算法---汉诺塔

思路分析 代码实现 package com.atguigu.dac;public class Hanoitower {public static void main(String[] args) {hanoiTower(5,A,B,C);}//汉诺塔移动的方法//使用分治算法public static void hanoiTower(int num,char a,char b,char c){//如果只有一个盘if(num1){System.out…

数组复习

在我周围&#xff0c;像我这种性格的人特多——在公众场合什么都不说&#xff0c;到了私下里却妙语连珠&#xff0c;换言之&#xff0c;对信得过的人什么都说&#xff0c;对信不过的人什么都不说。保持沉默是怯懦的。——《沉默的大多数》ssh整合案例1泪点伊人颜多少红尘过客&a…

mysql id生成器自定义_MybatisPlus使用自定义Id生成器数据自动填充

使用自定义ID生成器实现IdentifierGenerator接口Componentpublic class CustomerIdGenerator implements IdentifierGenerator {Overridepublic Number nextId(Object entity) {// 填充自己的Id生成器&#xff0c;return HolaSms.snowFlake();}}实体类或者配置文件中指定id填充…