思路1:
将数字第一个与最后一个交换,第二个和倒数第二个交换,如果总数为奇数,那么最中间那个则没有交换,用中间这个与最后一个交换即可。
#include<iostream>
using namespace std;
int main()
{
int t;
cin >> t;
while(t --){
int n;
cin >> n;
int a[n+1];
for(int i = 1;i <= n;i ++) a[i]=i;
for(int i = 1;i <= n/2;i ++) swap(a[i],a[n-i+1]);
if(n&1)swap(a[n/2+1],a[n]);
for(int i = 1;i <= n-1;i ++) cout << a[i] << " ";
cout << a[n] << endl;
}
return 0;
}
思路2:
a
[
1
]
=
2
,
a
[
3
]
=
4
,
.
.
.
,
a
[
i
]
=
i
+
1
,
.
.
.
,
a
[
n
−
1
]
=
a
[
n
]
,
a
[
n
]
=
1
a[1] =2,a[3] = 4,...,a[i]=i+1,...,a[n-1]=a[n],a[n] = 1
a[1]=2,a[3]=4,...,a[i]=i+1,...,a[n−1]=a[n],a[n]=1
总的来说就是第i位放i+1,第n位放1
#include<iostream>
using namespace std;
int main()
{
int t;
cin >> t;
while(t --){
int n;
cin >> n;
int a[n+1];
for(int i = 1;i < n;i ++) cout << i + 1 << " ";
cout << 1 << endl;
}
return 0;
}