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实现异步回调机制代码分享
Jan 10 Python
Python下载指定页面上图片的方法
May 12 Python
Python中你应该知道的一些内置函数
Mar 31 Python
利用Python爬取微博数据生成词云图片实例代码
Aug 31 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
Aug 19 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
详解Python的爬虫框架 Scrapy
Aug 03 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
字典算法实现及操作 --python(实用)
Mar 31 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
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
五个PHP程序员工具
2008/05/26 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
jquery垂直公告滚动实现代码
2013/12/08 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Python3内置函数chr和ord实现进制转换
2020/06/05 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
python输入中文的实例方法
2020/09/14 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
质量负责人任命书
2014/06/06 职场文书
药店采购员岗位职责
2014/09/30 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
助学金感谢信
2015/01/20 职场文书
银行求职自荐信范文
2015/03/04 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
小学四年级作文之写景
2019/08/23 职场文书