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运行的17个时新手常见错误小结
Aug 07 Python
python利用正则表达式提取字符串
Dec 08 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
python format 格式化输出方法
Jul 16 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
使用python远程操作linux过程解析
Dec 04 Python
Django之form组件自动校验数据实现
Jan 14 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
Python selenium实现断言3种方法解析
Sep 08 Python
python编写扎金花小程序的实例代码
Feb 23 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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
Joomla开启SEF的方法
2016/05/04 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
jquery实现仿JqueryUi可拖动的DIV实例
2015/07/31 Javascript
SVG描边动画
2017/02/23 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
react+redux仿微信聊天界面
2019/06/21 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
python3中eval函数用法使用简介
2019/08/02 Python
Python简易版停车管理系统
2019/08/12 Python
python实现邮件循环自动发件功能
2020/09/11 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
上课迟到检讨书
2014/01/19 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
社区先进事迹材料
2014/05/19 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
python如何读取.mtx文件
2021/04/22 Python
golang switch语句的灵活写法介绍
2021/05/06 Golang