/*
输入整数n,生成一个长度为n的数组a。
数组a需要满足条件:a[a[i]] = n - a[i] + 1。
输出的数组不仅需要满足条件,还需要最大数组序。
举例:
输入:
2
输出:
2 1
*/
#include <iostream>
#include <numeric> //使用iota函数需要numeric库
#include<vector>
using namespace std;
int main() {
int n; //输入数组长度n
cin >> n;
int* a = new int[n]; //申请堆用于存储数组
//int a[1000]; //可以直接用数组,后面就不用delete,但不知道创建的数组长度
iota(a, a + n, 1); //初始化数组为 1,2,3,4,...
for (int i = 0; i < n; ++i) { //通过循环修订数组的值
a[a[i] - 1] = n - a[i] + 1; //可能需要多个循环,并加入判断条件
}
for (int i = 0; i < n; ++i) { //打印输出
cout << a[i] << " ";
}
delete[] a;
////---使用vector容器---
//vector<int> a;
//for (int i = 0; i < n; ++i) {
// a.push_back(i + 1);
//}
//for (int i = 0; i < n; ++i) {
// a[a[i] - 1] = n - a[i] + 1;
//}
//for (int i = 0; i < n; ++i) {
// cout << a[i] << " ";
//}
return 0;
}
/*
(1)其实这里有规律:2个数{2,1},3个数{3,2,1},...,100个数{100,99,98,...,2,1}都是满足条件的。
(2)题目要求最大数组序,该代码没有考虑到。
(3)需要多重循环进行判断,确保数组满足等式条件,该代码只循环了一次。
*/