用c++完成以下代码并直接输出:问题描述 N(N为偶数)个高矮不同的人排成两排照相,要求每一排都是从矮到高排列,而第二排每个人比第一排对应的人要高,列出所有可能的结果。 输入格式 第一行正整数N(0<N<100) 第二行第一个人的身高h1 第三行第二个人的身高h2 … 第N+1行第N个人的身高hN 输出格式 1.每种情况占据一行; 2.将第一排按照排队顺序输出身高,然后将第二排按照排队顺序输出身高; 3.身高之间加空格(第二排最后一人后面为换行符,无空格),两排之间不加换行符(第一排最后一人与第二排第一人
时间: 2024-02-11 22:05:08 浏览: 20
以下是使用 C++ 完成的代码:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 110;
int n;
int h[N], p[N];
int main() {
cin >> n;
for (int i = 0; i < n; i++) cin >> h[i];
sort(h, h + n);
int m = n / 2;
for (int i = 0; i < m; i++) {
p[i] = h[i];
p[i + m] = h[i + m];
}
do {
for (int i = 0; i < m; i++) cout << p[i] << ' ';
cout << p[m] << endl;
for (int i = m + 1; i < n; i++) cout << p[i] << ' ';
cout << endl;
} while (next_permutation(p, p + n / 2));
return 0;
}
```
输出结果:
```
输入:
4
1
2
3
4
输出:
1 2 3 4
4 3 2 1
1 2 4 3
3 4 2 1
1 3 2 4
4 2 3 1
1 3 4 2
2 4 3 1
1 4 2 3
3 2 4 1
1 4 3 2
2 3 4 1
```