从键盘读入n个整数(每个数都是1~9之间的数),输出这n个整数的全排列(数字不能重复)。
时间: 2024-04-30 14:20:27 浏览: 15
这个问题可以使用递归来解决。我们可以将问题分解为两个部分:
1. 选取一个数字作为排列的第一个数字。
2. 对于剩余的数字进行全排列,然后将第一步选取的数字与全排列的结果进行组合。
具体实现见下方代码:
```python
def permute(nums):
res = []
def backtrack(nums, path):
if not nums:
res.append(path)
return
for i in range(len(nums)):
backtrack(nums[:i]+nums[i+1:], path+[nums[i]])
backtrack(nums, [])
return res
n = int(input())
nums = list(range(1, 10))[:n]
res = permute(nums)
for r in res:
print(' '.join(str(x) for x in r))
```
输入样例:
```
3
```
输出样例:
```
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
```
相关问题
从键盘输入正整数n,输出n个由数字8组成的数字串,c语言
以下是一个示例代码:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入正整数n:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("8");
}
printf("\n");
return 0;
}
```
首先,通过 `scanf` 函数从键盘读入正整数 `n`。然后,使用 `for` 循环输出 `n` 个数字8,每输出一个数字8就进行一次循环迭代,直到输出完毕。最后,使用 `printf` 函数输出一个换行符,保证输出的数字串和后续内容分隔开来。
从键盘读入一个整数,输出反序数
可以使用以下代码实现:
```
#include <stdio.h>
int main() {
int num, reversed = 0;
printf("请输入一个整数:");
scanf("%d", &num);
while (num != 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
printf("反序数为:%d", reversed);
return 0;
}
```
这段代码可以从键盘读入一个整数,然后计算出它的反序数并输出。