算法实践:全排列(递归)

Hasana ·
更新时间:2024-11-11
· 986 次阅读

全排列 描述

给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。

输入

输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在2到8之间。

输出

输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:

已知S = s1s2…sk, T = t1t2…tk,则S < T 等价于,存在p (1 <= p <= k),使得s1= t1, s2= t2, …, sp - 1= tp - 1, sp< tp成立

样例 abc abc acb bac bca cab cba 难度

中等,递归

解题思路

img

代码 status_list = [] def permutations(arr, position, end): if position == end: #print(arr) status_list.append(list(arr)) #print(status_list) else: for index in range(position, end): arr[index], arr[position] = arr[position], arr[index] permutations(arr, position+1, end) arr[index], arr[position] = arr[position], arr[index] def sortstring(status_list): for i in range(len(status_list)): stri = '' for item in status_list[i]: #print(item) stri += str(item) status_list[i] = stri status_list.sort() s = input() arr=[] for i in s: arr.append(i) permutations(arr, 0, len(arr)) sortstring(status_list) #print(status_list) for i in status_list: print(i)
作者:马踏飞燕&lin_li



排列 全排列 递归 算法

需要 登录 后方可回复, 如果你还没有账号请 注册新账号