python——全排列数的生成方式


Posted in Python onFebruary 26, 2020

【问题描述】输入整数N( 1 <= N <= 10 ),生成从1~N所有整数的全排列。

【输入形式】输入整数N。

【输出形式】输出有N!行,每行都是从1~N所有整数的一个全排列,各整数之间以空格分隔。各行上的全排列不重复。输出各行遵循"小数优先"原则, 在各全排列中,较小的数尽量靠前输出。如果将每行上的输出看成一个数字,则所有输出构成升序数列。具体格式见输出样例。

【样例输入1】1

【样例输出1】1

【样例说明1】输入整数N=1,其全排列只有一种。

【样例输入2】3

【样例输出2】

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

【样例说明2】输入整数N=3,要求整数1、2、3的所有全排列, 共有N!=6行。且先输出1开头的所有排列数,再输出2开头的所有排列数,最后输出3开头的所有排列数。在以1开头的所有全排列中同样遵循此原则。

【样例输入3】10

【样例输出3】

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 10 9

1 2 3 4 5 6 7 9 8 10

1 2 3 4 5 6 7 9 10 8

1 2 3 4 5 6 7 10 8 9

1 2 3 4 5 6 7 10 9 8

1 2 3 4 5 6 8 7 9 10

1 2 3 4 5 6 8 7 10 9

1 2 3 4 5 6 8 9 7 10

1 2 3 4 5 6 8 9 10 7

【样例说明3】输入整数N=10,要求整数1、2、3、…、10的所有全排列。上例显示了输出的前10行。

【运行时限】要求每次运行时间限制在20秒之内。超出该时间则认为程序错误。提示:当N增大时,运行时间将急剧增加。在编程时要注意尽量优化算法,提高运行效率。

q = []
def perm(n ,begin , end):#使用递归进行全排列
  global q#将q定义成全局变量
  if begin >= end:#判断是否排序到最后一个数
    q += n
  else:
    i = begin
    for num in range(begin , end):
      n[num], n[i] = n[i], n[num]
      perm(n, begin + 1, end)
      n[num], n[i] = n[i], n[num]
n = int(input())#输入整数n
a = []
for i in range(1, n+1):#获取1~n的列表
  a.append(i)
perm(a , 0 , n)
b = []
temp = 1
for w in range(1 , n+1):#获得输出行数
  temp *= w
for j in range(0 , temp):#将perm中q所得的列表进行拆分
  b.append(q[j*n:j*n+n])
ss = sorted(b)#排序
for r in ss:
  for c in r:
    print(c , end=' ')
  print()

补充拓展:解决Python数字全排列的问题

利用itertools模块

按住control点一下permulations方法,是一个枚举方法

python——全排列数的生成方式

import itertools

array = [1,2,3,4]
pailie = list(itertools.permutations(array))#要list一下,不然它只是一个对象
for x in pailie:
  for y in x:
    print(y,end=' ')
  print()

python——全排列数的生成方式

如果不是全排列,是按字典序输出不重复的组合方式可以用这个库的combinations

from itertools import combinations
import sys
a,b = map(int,input().split())# a表示组合的序列是1到几,b表示进行组合的一个是几个数
if b > a:
  print('-1')
  sys.exit()
mylist = list(range(1,a+1))
for x in combinations(mylist,b):# 参数第一个是可迭代的序列,第二个是一个组合几个数
  for index in x:
    print(index,end=' ')
  print()

输入5,3如图

python——全排列数的生成方式

以上这篇python——全排列数的生成方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python检测服务器是否正常
Feb 16 Python
python实现判断数组是否包含指定元素的方法
Jul 15 Python
Python按行读取文件的简单实现方法
Jun 22 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
Feb 07 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
Python代码注释规范代码实例解析
Aug 14 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 #Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 #Python
python自动点赞功能的实现思路
Feb 26 #Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 #Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 #Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 #Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 #Python
You might like
常用星际术语索引(新手指南)
2020/03/04 星际争霸
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
php连接与操作PostgreSQL数据库的方法
2014/12/25 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
Vue header组件开发详解
2018/01/26 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
js实现列表按字母排序
2020/08/11 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
python验证码识别的示例代码
2017/09/21 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
Python将字典转换为XML的方法
2020/08/01 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
社团文化节邀请函
2014/01/10 职场文书
校本教研工作制度
2014/01/22 职场文书
政工例会汇报材料
2014/08/26 职场文书
干部作风纪律整顿心得体会
2016/01/23 职场文书