递归枚举1到n的全排列

aj552950 程序题 共 个子题

题目说明

要求:设计一个算法,枚举排列问题。输入1-n的第1个排列,如1 2 3,按照大小输出1~n的所有排列,并统计全部排列总数。

根据上述算法思想,补全下列代码。

描述:输入1-n的第1个排列,如1 2 3,按照大小输出1~n的所有排列。

函数名:perm(n,begin,end)参数表:n -- 整数n,begin -- 指向排列的第一个元素,end-- 指向排列的最后一个元素。

返回值:输出1-n的所有排列方式,每行一个排列,按从小到大。

示例:当输入1 2 3时,返回:

[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 2, 1][3, 1, 2]排列总数是:6个!

COUNT=0
def perm(n,begin,end):
global COUNT
if   ①
print (n)
COUNT +=1
else:
i=begin
for num in   ②    :
n[num],n[i]=n[i],n[num]
③
n[num],n[i]=n[i],n[num]
arr = input("1-n的第1个排列:")
n = [int(n) for n in arr.split()]
④
print ("排列总数是:%d个!"% COUNT)

评分标准

①begin>=end: 或等效答案;(2分) ②range(begin,end) 或等效答案;(2分) ③perm(n,begin+1,end) 或等效答案;(2分) ④perm(n,0,len(n)) 或等效答案;(2分)

本题为编程题,提交代码并运行通过测试点后判分。

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
提交记录
共 条 仅展示自由练习提交
正在加载提交记录…
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧