// 一副扑克,将堆顶的牌放到桌上,再将堆顶的牌放到堆底,如此知道所有牌都放到桌上,而桌上的牌为从1到n有序排列。
// 求刚开始时扑克牌的顺序
// 思路:从1到n的队列,1放到桌上,2放回堆底...依次类推,得到一组数字,然后这组数字为一组数组的下标,依次放入1-n
// 输出结果:0 1 5 2 7 3 6 4 8 即 1 5 2 7 3 6 4 8为开始的牌的顺序(忽略0)
public class demo {
public static void seekarray(int n){
LinkedList<Integer> list = new LinkedList<Integer>();
for(int i = 1; i <= n; i++){
list.add(i);
}
int[] array = new int[n + 1];
int index = 1;
while(!list.isEmpty()){
array[index] = list.removeFirst();
index ++;
if(!list.isEmpty())
list.addLast(list.removeFirst());
}
int[] result = new int [n + 1];
for(int i = 0; i <= n; i++){
result[array[i]] = i;
}
for(int i : result){
System.out.print(i + " ");
}
}
}