Throwing cards away I(queue迴圈佇列)
Given is an ordered deck ofn cards numbered 1 to n with card 1 at the top and card n at the bottom. The following operation is performed as long as there are at least two cards in the deck:
Throw away the top card and move the card that is now on the top of the deck to the bottom of the deck.
Your task is to find the sequence of discarded cards and the last, remaining card.
Each line of input (except the last) contains a number n ≤ 50. The last line contains 0 and this line should not be processed. For each number from the input produce two lines of output. The first line presents the sequence of discarded cards, the second line reports the last remaining card. No line will have leading or trailing spaces. See the sample for the expected format.
Sample input
7 19 10 6 0
Output for sample input
Discarded cards: 1, 3, 5, 7, 4, 2 Remaining card: 6 Discarded cards: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 4, 8, 12, 16, 2, 10, 18, 14 Remaining card: 6 Discarded cards: 1, 3, 5, 7, 9, 2, 6, 10, 8 Remaining card: 4 Discarded cards: 1, 3, 5, 2, 6 Remaining card: 4
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Queue<Integer> queue =new LinkedList<>();//佇列的寫法
Queue<Integer> ans =new LinkedList<>();
while(sc.hasNext()){
int N;int flag=1;
N=sc.nextInt();
if(N==0)break;
for(int i=1;i<=N;i++)
{
queue.add(i);
}
System.out.print("Discarded cards:");
while(queue.size()>1)
{
if(flag==1){
System.out.print(" "+queue.poll());//poll相當於棧的pop
}
else{
int temp = queue.poll();
queue.add(temp);
System.out.print(",");
}
flag=-1*flag;
}
System.out.print("\n");
System.out.print("Remaining card: "+queue.poll());
System.out.print("\n");
}
}
}
相關文章
- 佇列 和 迴圈佇列佇列
- 佇列 手算到機算 入門 佇列 迴圈佇列佇列
- 佇列的一種實現:迴圈佇列佇列
- LeetCode 迴圈佇列LeetCode佇列
- 迴圈佇列的基本操作佇列
- Java版-資料結構-佇列(迴圈佇列)Java資料結構佇列
- JDK QUEUE佇列JDK佇列
- Team Queue(佇列)佇列
- 事件迴圈與任務佇列事件佇列
- 迴圈佇列C++實現佇列C++
- 佇列的順序儲存--迴圈佇列的建立佇列
- 靜態佇列,迴圈陣列實現佇列陣列
- python佇列QueuePython佇列
- C# 佇列(Queue)C#佇列
- c/c++線性迴圈佇列C++佇列
- 手擼MQ訊息佇列——迴圈陣列MQ佇列陣列
- 佇列(Queue)-c實現佇列
- STL(十九)queue佇列容器佇列
- 迴圈佇列的實現及細節佇列
- 順序迴圈佇列的介面設計佇列
- laravel原始碼分析-佇列QueueLaravel原始碼佇列
- 【小白學演算法】3. 迴圈佇列演算法佇列
- 資料結構——迴圈佇列PTA習題資料結構佇列
- 自定義單連結串列佇列的基本介面函式(非迴圈佇列)佇列函式
- 資料結構-迴圈佇列(Python實現)資料結構佇列Python
- node事件迴圈和訊息佇列簡單分析事件佇列
- 資料結構之佇列(Queue)資料結構佇列
- java Queue佇列相關總結Java佇列
- js資料結構--佇列(queue)JS資料結構佇列
- 基於迴圈佇列的BFS的原理及實現佇列
- 【資料結構】迴圈佇列 C語言實現資料結構佇列C語言
- 【資料結構】迴圈佇列的實現(c++)資料結構佇列C++
- 陣列迴圈陣列
- 【資料結構】迴圈佇列的front,rear指標以及佇列滿的條件、計算佇列長度資料結構佇列指標
- C 語言實現使用靜態陣列實現迴圈佇列陣列佇列
- C 語言實現使用動態陣列實現迴圈佇列陣列佇列
- Team Queue (佇列的一種應用)佇列
- POJ 2259 Team Queue【模擬佇列】佇列