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佇列
- 事件迴圈與任務佇列事件佇列
- 迴圈佇列C++實現佇列C++
- 佇列的順序儲存--迴圈佇列的建立佇列
- python佇列QueuePython佇列
- C# 佇列(Queue)C#佇列
- c/c++線性迴圈佇列C++佇列
- 佇列(Queue)-c實現佇列
- STL(十九)queue佇列容器佇列
- 迴圈佇列的實現及細節佇列
- 【小白學演算法】3. 迴圈佇列演算法佇列
- 資料結構——迴圈佇列PTA習題資料結構佇列
- laravel原始碼分析-佇列QueueLaravel原始碼佇列
- 資料結構-迴圈佇列(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【模擬佇列】佇列
- 29_檢查點佇列(checkpoint queue)佇列
- 深入分析Node.js事件迴圈與訊息佇列Node.js事件佇列
- Android Handler機制之迴圈訊息佇列的退出Android佇列
- java集合類——Stack棧類與Queue佇列Java佇列
- 【資料結構】棧(Stack)和佇列(Queue)資料結構佇列