这个题是个简单的构造题
因为不能有连续的“排列”,而排列序列都是必须是以 \(1\) 开头
所以我们只要让 \(2\) 和 \(1\) 不相邻就能保证一个序列里只有它本身和 \(1\) 这两个“排列”
当时在考场上第一感觉写了一个双指针,赛后 dalao 们说可以直接让 \(1\) 在序列第一个, \(2\) 在序列最后一个
//双指针代码
#include<cstdio>
int T;
int main(){
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
int i=1,j=n;
while(i<=j){
if(i==j){
printf("%d ",i);
}else{
printf("%d %d ",i,j);
}
i++,j--;
}
puts("");
}
return 0;
}
//dalao做法
#include<cstdio>
int T;
int main(){
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
printf("1 ");
for(int i=3;i<=n;i++){
printf("%d ",i);
}
printf("2\n");
}
return 0;
}
标签:int,题解,scanf,while,CF1743B,序列,dalao
From: https://www.cnblogs.com/Tyrue-blog/p/16937395.html