把 0~n-1 放到初始数组里面,按照题中队列操作输出后,逆下标映射即可:
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception{
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int i = 0; i < T; ++i){
int n = sc.nextInt();
List<Integer> v = new ArrayList<>();
for(int j = 0; j < n; ++j) v.add(j);
List<Integer> r = new ArrayList<>(v);
List<Integer> ans = g(v);
for(int j = 0; j < n; ++j){
r.set(ans.get(j), j + 1); //逆下标映射
}
f(r);
}
}
static void f(List<Integer> v){ //打印输出
System.out.print(v.get(0));
for(int i = 1; i < v.size(); ++i){
System.out.print(" ");
System.out.print(v.get(i));
}
System.out.println();
}
static List<Integer> g(List<Integer> v){ //题给的队列操作
List<Integer> ans = new ArrayList<>();
while(!v.isEmpty()){
int x = v.get(0);
v.remove(0);
v.add(x);
x = v.get(0);
ans.add(x);
v.remove(0);
}
return ans;
}
}
京公网安备 11010502036488号