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列表推导式的使用方法
Nov 21 Python
python实现html转ubb代码(html2ubb)
Jul 03 Python
Python中使用logging模块打印log日志详解
Apr 05 Python
Python中用PIL库批量给图片加上序号的教程
May 06 Python
Python函数中的函数(闭包)用法实例
Mar 15 Python
python机器学习之神经网络(三)
Dec 20 Python
python实现百度语音识别api
Apr 10 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 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中for循环语句的几种变型
2006/11/26 PHP
php中的登陆login
2007/01/18 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
php 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
关于php curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
DOM事件探秘篇
2017/02/15 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
Python类的基础入门知识
2008/11/24 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
谈谈Python中的while循环语句
2019/03/10 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
python带参数打包exe及调用方式
2019/12/21 Python
python中有关时间日期格式转换问题
2019/12/25 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
英国健身超市:Fitness Superstore
2019/06/17 全球购物
创业计划书——互联网商机
2014/01/12 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python