Python 中的递归排列

news2024/10/7 16:18:59
在 Python 中使用递归计算排列,适合绝对初学者

排列示例图像

介绍

有些人发现很难理解递归算法。

这个技巧向绝对初学者展示了如何使用递归查找排列。Python

背景

这个技巧的想法来自一个问答问题:可怜的 OP 花了三天时间“翻头”,试图弄清楚一小段代码如何能够生成输入列表项的所有排列。为了阻止这种危险的运动,我试图阐明这一论点。Python

1. 问题

问题是:找到一个集合的所有排列。粗略地说,我们必须找到集合元素的所有不同排列。

2. “纸和铅笔”方法

让我们从简单开始。考虑一个具有单个元素的集合。显然,这个可怜的、孤独的物品的唯一安排就是它自己。1

2.1 {1}的排列

<span style="color:#111111"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#fbedbb">P[1]  =  1</span></span></span></span>

现在考虑两个元素,所有的排列都简化为一个简单的交换。

2.2 {1,2}的排列

<span style="color:#111111"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#fbedbb">           1 2
P[1 2]  =
           2 1</span></span></span></span>

最后,考虑三个要素:稍加努力,我们写:

2.3 {1,2,3}的排列

<span style="color:#111111"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#fbedbb">             1 2 3
		   
             1 3 2
		   
             2 1 3
P[1 2 3]  =           
             2 3 1
		   
             3 1 2
		   
             3 2 1</span></span></span></span>

3. 新兴模式

考虑最后一个示例,有一个新兴模式:首先,我们选择了集合的第一个元素(即 )。{1,2,3}1

然后,对于剩余的项目(即 和 ),我们按照配方继续,也就是说,我们已经交换了它们。232.2

最后,我们分别选择了第二项和第三项,并对其余项进行了类似的操作。

总结一下:

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

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

相关文章

从零开始利用MATLAB进行FPGA设计(五)详解双口RAM

创作于谱仪算法设计过程中的数字能谱生成模块设计。 往期回顾&#xff1a; 从零开始利用MATLAB进行FPGA设计&#xff08;四&#xff09;生成优化HDL代码 从零开始利用MATLAB进行FPGA设计&#xff08;三&#xff09;将Simulink模型转化为定点数据类型 目录 1.关于双口RAM …

Python | Leetcode Python题解之第46题全排列

题目&#xff1a; 题解&#xff1a; class Solution:def permute(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""def backtrack(first 0):# 所有数都填完了if first n: res.append(nums[:])for i in range(first, n):# 动…

【Leetcode每日一题】 穷举vs暴搜vs深搜vs回溯vs剪枝_全排列 - 子集(难度⭐⭐)(65)

1. 题目解析 题目链接&#xff1a;78. 子集 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 算法思路详解&#xff1a; 为了生成数组 nums 的所有子集&#xff0c;我们需要对数组中的每个元素进行“选择”或“不选择…

被删除的数字-第12届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第57讲。 被删除的数字&…

Redis底层数据结构之quicklist

目录 一、概述二、quicklist结构三、quicklistNode结构四、优缺点 redis底层数据结构已完结&#x1f44f;&#x1f44f;&#x1f44f;&#xff1a; ☑️redis底层数据结构之SDS☑️redis底层数据结构之ziplist☑️redis底层数据结构之quicklist☑️redis底层数据结构之Dict☑️…

SecuPress Pro 专业级WordPress网站安全防护插件优化版

下载地址&#xff1a;SecuPress Pro 专业版.zip SecuPress Pro&#xff1a;专业的WordPress安全解决方案 如果您没有时间进行每周扫描&#xff0c;SecuPress Pro将是您的理想选择。SecuPress Pro提供了所有SecuPress Free的功能&#xff0c;同时还增加了一些高级选项&#xff…

SpringBoot War打包部署

修改打包方式 <packaging>war</packaging>修改 Servlet 容器的 scope <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></d…

一分钟掌握苹果语音备忘录怎么导出的3个方法!

苹果设备自带的语音备忘录功能&#xff0c;让我们能够随时随地记录生活中的点滴声音&#xff0c;无论是会议内容、学习笔记还是灵感闪现&#xff0c;都能轻松捕捉。然而&#xff0c;有时我们可能需要将这些语音文件导出到其他设备或平台&#xff0c;以便更好地整理、分享或备份…

API提取IP

API代理作为IP代理的一项重要业务&#xff0c;在绕开地域网络限制&#xff0c;提高作业效率等方面提供强大的技术支持。它能够帮助用户快速实现软件与软件间的交流&#xff0c;无障碍连通不同应用程序逻辑开发的系统应用。API代理用途范围广泛&#xff0c;如使用API提取代理IP、…

xinput1 3.dll丢失怎么办?详细解析靠谱的xinput1 3.dll修复方法

当电脑出现提示&#xff0c;显示 ​xinput1_3.dll​文件缺失时&#xff0c;这实际上是一种常见的DLL文件遗失错误&#xff0c;其修复过程通常相对简单。今天&#xff0c;我们将探讨四种不同的方法来解决 ​xinput1_3.dll​缺失的问题。 一.xinput1_3.dll文件解析 xinput1_3.d…

RabbitMQ的幂等性、优先级队列和惰性队列

文章目录 前言一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一 ID指纹码机制6、Redis 原子性 二、优先级队列1、使用场景2、如何添加3、实战 三、惰性队列1、使用场景2、两种模式3、内存开销对比 总结 前言 一、幂等性 1、概念 2、消息重复消费 3、…

金职在线 央企国企 跟私企都有哪些区别

一、性质不同 央企国企是国家的全资子公司&#xff0c;属于国有企业。私企就是由自然人投资设立或由自然人控股&#xff0c;以雇佣劳动为基础的营利性经济组织。 二、管理不同 央企国企有完整的审批程序和监管机制&#xff0c;而私企的决策相对简单。国企是政府管理的&#…

李彦宏:程序员将不复存在! 周鸿祎回怼!网友:先把百度程序员都开除了!

近日&#xff0c;百度创始人、董事长兼首席执行官李彦宏在央视《对话》•开年说的访谈中指出&#xff1a;“基本上说以后其实不会存在“程序员”这种职业了&#xff0c;因为只要会说话&#xff0c;人人都会具备程序员的能力”。 “未来的编程语言只会剩下两种&#xff0c;一种…

.net EntityFramework EF

创建EF 方法1 方法二 安装的 版本是 中间没有弹出让选框架的界面&#xff0c; EF三种开发方式 1》》 db first 先设计数据库→然后在代码通过EF与数据库建立映射关系&#xff0c;是EF最早的一种使用方式,使用广泛.以数据库为驱动&#xff0c;生成实体模型&#xff0c;从而驱…

------分割线之 WebSecurityConfigrerAdapter弃用问题------

WebSecurityConfigurerAdapter 被弃用的原因是 Spring Security 项目的维护者希望将项目的主要开发工作集中在新的配置方式上&#xff0c;即基于 Java 的配置&#xff08;Java Configuration&#xff09;和基于 Lambda 的表达式。这主要是因为 Spring 5.0 引入了重量级的 Java …

k8s pod 无法启动一直ContainerCreating

情况如下&#xff0c;更新 pod 时&#xff0c;一直在ContainerCreating 查看详细信息如下 Failed to create pod sandbox: rpc error: code Unknown desc [failed to set up sandbox container “334d991a478b9640c66c67b46305122d7f0eefc98b2b4e671301f1981d9b9bc6” networ…

精益思想赋能数字化转型:落地策略与实践路径

当下&#xff0c;数字化转型已不再是选择题&#xff0c;而是关乎企业生存与发展的必答题。然而&#xff0c;转型过程中如何确保效率、降低成本并快速实现价值创造&#xff0c;成为了摆在众多企业面前的难题。精益思想作为一种追求精益求精、持续改进的管理思维&#xff0c;为数…

一般神经网络的微分与网络参数的初始化

(文章的主要内容来自电科的顾亦奇老师的 Mathematical Foundation of Deep Learning, 有部分个人理解) 一般深度神经网络的微分 上周讨论的前向和反向传播算法可以推广到任意深度神经网络的微分。 对于一般的网络来说&#xff0c;可能无法逐层分割&#xff0c;但仍然可以用流…

顺序表经典算法:头脑风暴来袭

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;http://t.csdnimg.cn/XSLtz&#xff08;经典算法题&#xff09; 小新的主页&#xff1a;编程版小新-CSDN博客 前言…

利用Landsat遥感卫星数据反演地表温度的方法与应用

随着遥感技术的快速发展&#xff0c;Landsat系列卫星数据成为了地表温度监测和研究的重要数据源之一。本文将介绍如何利用Landsat数据反演地表温度的方法以及在环境监测、气候变化、水文循环和农业生产等领域的应用。 1. Landsat数据概述 Landsat卫星是美国国家航空航天局&…