📅  最后修改于: 2023-12-03 15:37:14.005000             🧑  作者: Mango
这是一道ISRO CS 2008的考试题,需要考生利用C++编写代码。题目描述如下:
给定一个整数N,编写一个程序以打印由N个整数构成的按对称排序。
输入格式:
输出格式:
示例输入: 2 3 10 7 14 4 57 43 15 29
示例输出: 7 10 14 15 29 43 57
为了解决这道问题,我们可以先将输入的N个整数按从小到大排序,然后将它们从中间一分为二,左边从小到大输出,右边从大到小输出。最后将它们合并成一个序列即可。
以下是完整的C++程序实现。
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
int *arr;
arr = new int[N];
for (int i = 0; i < N; ++i)
cin >> arr[i];
sort(arr, arr + N); //从小到大排序
int i = 0, j = N - 1;
while (i < j) {
cout << arr[i++] << " ";
cout << arr[j--] << " ";
}
if (i == j) //N为奇数时,中间的一个要单独输出
cout << arr[i];
cout << endl;
delete[]arr; //释放内存
}
return 0;
}
以上代码使用了C++的基本语法,包括循环、条件判断、输入输出、动态内存申请和释放、排序等。其中,动态内存申请用到了new关键字,释放内存时使用delete[]运算符。