Python循环实现n的全排列功能
作者:wuhen_n 发布时间:2022-08-15 21:04:08
标签:Python,循环,全排列
描述:
输入一个大于0的整数n,输出1到n的全排列:
例如:
n=3,输出[[3, 2, 1], [2, 3, 1], [2, 1, 3], [3, 1, 2], [1, 3, 2], [1, 2, 3]]
n=4,输出[[4, 3, 2, 1], [3, 4, 2, 1], [3, 2, 4, 1], [3, 2, 1, 4], [4, 2, 3, 1], [2, 4, 3, 1], [2, 3, 4, 1], [2, 3, 1, 4], [4, 2, 1, 3],
[2, 4, 1, 3], [2, 1, 4, 3], [2, 1, 3, 4], [4, 3, 1, 2], [3, 4, 1, 2], [3, 1, 4, 2], [3, 1, 2, 4], [4, 1, 3, 2], [1, 4, 3, 2],
[1, 3, 4, 2], [1, 3, 2, 4], [4, 1, 2, 3], [1, 4, 2, 3], [1, 2, 4, 3], [1, 2, 3, 4]]
思路:
为1时,结果为1
为2时,结果就是两种:1,2 2,1(1的前后插入)
为3时,结果就是六种:1,2,3 1,3,2 3,2,1 (1,2的前中后插入)
3,2,1 2,3,1 2,1,3 (2,1的前中后插入)
代码:
import copy
def full_arrange(n):
data = [] # 中间结果
res = [] # 最终结果
if n == 1 :
return 1
res = [[1]]
for i in range(2, n+1):
for j in range(len(res)): # 遍历res数组(二维数组)
for x in range(len(res[j])+1): # 遍历res数组中的元素(一维数组)
data = copy.copy(res[j]) # 浅拷贝
data.insert(x,i) # 在一维数组的不同位置插入元素,获得新的数组
res.append(data)
x += 1
j += 1
# 删除多余数组(原始数组) 最后保留的数据(一维数组的长度) == i
while True:
if len(res[0]) != i:
res.remove(res[0])
else:
break
i += 1
return res
print(full_arrange(n))
总结
以上所述是小编给大家介绍的Python循环实现n的全排列功能,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/wuhen_n/article/details/98511553


猜你喜欢
- 一天不小心把ROOT的权限改到最小了(只能登录,什么都做不了),这可急死我了.重装的话太麻烦,而且里面有很多的用户,一个个重新弄不知道到什么
- 打包压缩js与css由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成
- 我就废话不多说了,大家还是直接看代码吧!# coding=utf-8import loggingimport yamlimport osim
- 用Python随机生成学生姓名,三科成绩和班级数据,再插入到PostgreSQL中。模块用psycopg2 randomimport ran
- 这篇文章主要介绍了Python tkinter常用操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 前言使用的pyecharts是v1.0这里需要注意,pyecharts0.5的版本和v1.0以上的版本完全不一样,可以说是两个包该包能够方便
- 简介CountVectorizer官方文档。将一个文档集合向量化为为一个计数矩阵。如果不提供一个先验字典,不使用分析器做某种特征选择,那么特
- /* 功能: 通用分页存储过程 参数: @PK varchar(50), 主键,用来排序的单一字段,空的话,
- 系统环境:win10 开发环境:JetBrains PyCharm 2017.1.5 x64 Python版本:2.7假如我们有一个clas
- 问题定义一个int型的一维数组,包含40个元素,用来存储每个学员的成绩,循环产生40个0~100之间的随机整数,(1)将它们存储到一维数组中
- 前言我们这里主要是利用requests模块和bs4模块进行简单的爬虫的讲解,让大家可以对爬虫有了初步的认识,我们通过爬几个简单网站,让大家循
- Thinkphp6的日志问题日志级别debug, info, notice, warning, error, critical, alert
- 如下所示:python 设置值import pandas as pdimport numpy as npdates = pd.date_ra
- 一、排序排序查询语法:select * from 表名 order by 列1 asc/desc [,列2 asc/desc,..
- 最近小编思维发散“Visual Studio可以集成chatgpt吗?”,这样不就可以让chatgp
- 本文实例讲述了Python3.5编程实现修改IIS WEB.CONFIG的方法。分享给大家供大家参考,具体如下:#!/usr/bin/env
- 支持向量机常用于数据分类,也可以用于数据的回归预测1、Question?我们经常会遇到这样的问题,给你一些属于两个类别的数据(如子图1),需
- 上一篇我们写了Django基于类如何增删改数据的方法,方法虽然简单,但新手可能对其原理不是很清楚,那么我们这次就用Django提供的Mode
- sql server 全文检索有两种搜索方式,一种是contains,另一种是freetext。前者是包含,类似于 like '%关
- 目录前言1. 准备工作2. 连接MongoDB3. 指定数据库4. 指定集合5. 插入数据6. 查询7. 计数8. 排序9. 偏移10. 更