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佇列
- 佇列 手算到機算 入門 佇列 迴圈佇列佇列
- 佇列的一種實現:迴圈佇列佇列
- python佇列QueuePython佇列
- JDK QUEUE佇列JDK佇列
- Team Queue(佇列)佇列
- Java版-資料結構-佇列(迴圈佇列)Java資料結構佇列
- 佇列的順序儲存--迴圈佇列的建立佇列
- 事件迴圈與任務佇列事件佇列
- 迴圈佇列C++實現佇列C++
- 靜態佇列,迴圈陣列實現佇列陣列
- C# 佇列(Queue)C#佇列
- 手擼MQ訊息佇列——迴圈陣列MQ佇列陣列
- c/c++線性迴圈佇列C++佇列
- 佇列(Queue)-c實現佇列
- 順序迴圈佇列的介面設計佇列
- 迴圈佇列的實現及細節佇列
- laravel原始碼分析-佇列QueueLaravel原始碼佇列
- 資料結構-迴圈佇列(Python實現)資料結構佇列Python
- 【小白學演算法】3. 迴圈佇列演算法佇列
- 資料結構——迴圈佇列PTA習題資料結構佇列
- 自定義單連結串列佇列的基本介面函式(非迴圈佇列)佇列函式
- js資料結構--佇列(queue)JS資料結構佇列
- java Queue佇列相關總結Java佇列
- 資料結構之佇列(Queue)資料結構佇列
- node事件迴圈和訊息佇列簡單分析事件佇列
- Team Queue (佇列的一種應用)佇列
- python的queue佇列獲取資料Python佇列
- 【資料結構】迴圈佇列 C語言實現資料結構佇列C語言
- Android Handler機制之迴圈訊息佇列的退出Android佇列
- 基於迴圈佇列的BFS的原理及實現佇列
- 陣列迴圈陣列
- LeetCode題解:641. 設計迴圈雙端佇列,使用佇列,JavaScript,詳細註釋LeetCode佇列JavaScript
- java集合類——Stack棧類與Queue佇列Java佇列
- C++ STL 優先佇列 (priority_queue)C++佇列
- 【資料結構】棧(Stack)和佇列(Queue)資料結構佇列
- 深入分析Node.js事件迴圈與訊息佇列Node.js事件佇列