要求:设计一个算法,枚举排列问题。输入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 ②range(begin,end+1) ③perm(n,begin+1,end) ④perm(n,0,len(n)-1)。核心:递归全排列,交换法生成所有排列并统计COUNT。
试卷来源:202112 青少年软件编程等级考试Python四级真题