問題描述:
桌上有一疊牌,從第一張牌(即位於頂面的牌)開始從上往下依次編號為1~n。當至少還剩兩張牌時進行一下操作:把第一張牌扔掉,然後把新的第一張牌放到整疊牌的最後。輸入n,輸出每次扔掉的牌,以及最後剩下的牌。
樣例輸入:7
樣例輸出:1 3 5 7 4 2 6
【分析】
顯然這是關於佇列的應用,複習並採用了課本的迴圈佇列。**如下:
1 #include2using
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 #include3using
namespace
std;
4 queueq;
5int
main()619
return0;
20 }
也可以用陣列來模擬佇列,**如下:
1 #include2using
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...