卡片遊戲 演算法

2022-05-03 17:45:09 字數 1448 閱讀 1079

問題描述:

桌上有一疊牌,從第一張牌(即位於頂面的牌)開始從上往下依次編號為1~n。當至少還剩兩張牌時進行一下操作:把第一張牌扔掉,然後把新的第一張牌放到整疊牌的最後。輸入n,輸出每次扔掉的牌,以及最後剩下的牌。

樣例輸入:7

樣例輸出:1 3 5 7 4 2 6

【分析】

顯然這是關於佇列的應用,複習並採用了課本的迴圈佇列。**如下:

1   #include2

using

namespace

std;

3const

int queuesize=100

;4 template

5class

circlequeue69

void

enqueue(t x);

10t dequeue();

11t getfront();

12int

getlength();

13bool empty()

14private

:

15int

data[queuesize];

16int

front;

17int

rear;

18};

19 template

20 void circlequeue::enqueue(t x)

2126 template

27 t circlequeue::dequeue()

2833 template

34 t circlequeue::getfront()

3539 template

40int circlequeue::getlength()

4144

intmain()

4553

while(a.getlength()>=2) //

關鍵演算法

5460 cout<61 }

c++提供了一種更加簡單的處理方式——stl佇列。**如下:

1 #include2 #include3

using

namespace

std;

4 queueq;

5int

main()619

return0;

20 }

也可以用陣列來模擬佇列,**如下:

1 #include2

using

namespace

std;

3const

int maxn=50;4

intqueue[maxn];

5void

main()

618 }

【總結】

顯然使用stl的**更簡潔,且不用事先知道n的大小。

905 卡片遊戲

時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 小明最近宅在家裡無聊,於是他發明了一種有趣的遊戲,遊戲道具是n張疊在一起的卡片,每張卡片上都有乙個數字,數字的範圍是0 9,遊戲規則如下 首先取最上方的卡片放到桌子上,然後每次取最上方的卡片,放到桌子上已有卡片序列的最右邊或者最...

hdu 卡片遊戲

problem description 小明最近宅在家裡無聊,於是他發明了一種有趣的遊戲,遊戲道具是n張疊在一起的卡片,每張卡片上都有乙個數字,數字的範圍是0 9,遊戲規則如下 首先取最上方的卡片放到桌子上,然後每次取最上方的卡片,放到桌子上已有卡片序列的最右邊或者最左邊。當n張卡片全部都放到桌子上...

codevs 卡片遊戲

題目描述 description 桌面上有一疊牌,從第一張牌 即位於頂面的牌 開始從上往下依次編號為1 n.當至少還剩兩張排時進行一下操作 把第一張牌扔掉,然後把新的第一張牌放到整疊牌的最後。輸入n。輸出每次扔掉的牌,以及最後剩下的牌。分析 說是費用流的題目,但是直接用陣列暴力模擬就過了。var t...