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 图片验证码代码分享
Jul 04 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
python实现反转部分单向链表
Sep 27 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 Python
sklearn的predict_proba使用说明
Jun 28 Python
python字典通过值反查键的实现(简洁写法)
Sep 30 Python
Python Selenium库的基本使用教程
Jan 04 Python
深度学习详解之初试机器学习
Apr 14 Python
python小程序之飘落的银杏
Apr 17 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进程同步代码实例
2015/02/12 PHP
curl和libcurl的区别简介
2015/07/01 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
2015/11/25 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
深入理解vue Render函数
2017/07/19 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
学习python (1)
2006/10/31 Python
在Django的上下文中设置变量的方法
2015/07/20 Python
bpython 功能强大的Python shell
2016/02/16 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
使用Python OpenCV为CNN增加图像样本的实现
2019/06/10 Python
centos7之Python3.74安装教程
2019/08/15 Python
python应用文件读取与登录注册功能
2019/09/23 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
生物科学专业个人求职信范文
2013/12/07 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
学校教师安全责任书
2014/07/23 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android