c++整数1到n的全排列,每行输出一个排列,排列的各元素用空格分隔。
时间: 2024-05-12 09:18:24 浏览: 12
好的,下面是给您的代码实现,可以实现1到n的全排列输出:
```c
#include <stdio.h>
int n;
int a[100];
void swap(int *a, int *b) {
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void perm(int start, int end) {
int i;
if (start == end) {
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
} else {
for (i = start; i <= end; i++) {
swap(&a[start], &a[i]);
perm(start + 1, end);
swap(&a[start], &a[i]);
}
}
}
int main() {
scanf("%d", &n);
int i;
for (i = 0; i < n; i++) {
a[i] = i + 1;
}
perm(0, n - 1);
return 0;
}
```
希望可以帮到您!
相关问题
用c++语言完成 给定一个正整数n,输出从1到n的全排列
以下是用 C 语言实现输出从 1 到 n 的全排列的代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void permute(int *arr, int start, int end) {
if (start == end) {
for (int i = 0; i <= end; i++) {
printf("%d ", arr[i]);
}
printf("\n");
} else {
for (int i = start; i <= end; i++) {
swap(&arr[start], &arr[i]);
permute(arr, start + 1, end);
swap(&arr[start], &arr[i]);
}
}
}
int main() {
int n;
printf("请输入正整数 n:");
scanf("%d", &n);
int arr[n];
for (int i = 0; i < n; i++) {
arr[i] = i + 1;
}
permute(arr, 0, n - 1);
return 0;
}
```
输入正整数 n 后,程序会输出从 1 到 n 的全排列。例如,当 n 为 3 时,输出如下:
```
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
```
希望这个回答能够帮到你!
输入n个整数,并将这些整数,每5个一行输出。每个数之间用空格分隔 c++
好的,可以使用以下代码实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
cout << x << " ";
if (i % 5 == 0) cout << endl; // 每5个数换一行
}
return 0;
}
```
输入n,然后循环读入n个整数,每输入一个就输出,并判断是否已经输出了5个数,如果是则换行。