输入正整数n(n<10),输出abcd...n个不同字母的全排列,输出时按升序每行显示一个结果
时间: 2023-04-21 08:04:14 浏览: 335
这是一道排列组合的问题,需要用到递归算法。
具体步骤如下:
1. 定义一个长度为n的数组,用来存储每个字母的状态(是否已经被选中)。
2. 定义一个字符串,用来存储当前已经选中的字母。
3. 编写递归函数,每次从未选中的字母中选取一个,加入到字符串中,并将该字母的状态设为已选中。
4. 当字符串长度达到n时,输出该字符串,并返回上一层递归。
5. 在每一层递归中,都需要遍历所有未选中的字母,进行递归调用。
6. 最后,按照字典序对所有结果进行排序,每行输出一个结果。
代码如下:
```python
def permutation(n, used, s, res):
if len(s) == n:
res.append(s)
return
for i in range(n):
if not used[i]:
used[i] = True
permutation(n, used, s + chr(ord('a') + i), res)
used[i] = False
n = int(input())
used = [False] * n
res = []
permutation(n, used, "", res)
res.sort()
for s in res:
print(s)
```
输入样例:
```
3
```
输出样例:
```
abc
acb
bac
bca
cab
cba
```
阅读全文