棧與佇列三題

2021-08-19 23:39:45 字數 1126 閱讀 7866

貝茜正在與她的n-1(2 <= n <= 100)個朋友打牌。她們玩的牌一副為k(n <= k <= 100,000,k為n的倍數)張。所有牌中,一共有m(m = k / n)張「好

牌」,其餘的k - m張為「差牌」。

貝茜是遊戲的發牌者,很自然地,她想把所有好牌都留給自己。她熱衷於獲勝,即使為此必須採取一些不正當的手段。

在若干局遊戲後,貝茜的朋友們開始懷疑貝茜在遊戲中作弊,於是她們想了個對策:使用新的發牌規則。規則具體如下:

貝茜把牌堆的最上面一張發給她右邊的奶牛

每當貝茜發完一張牌,她都得將牌堆頂部接下來的p(1 <= p <= 10)張牌 放到底部去(一般把這個操作稱為切牌)

然後,貝茜對逆時針方向的下一頭奶牛重複上述的操作

貝茜絕望地認為,她再也不可能獲勝了,於是她找到了你,希望你告訴她,將好牌放在初始牌堆的哪些位置,能夠確保它們在發完牌後全集中到她手裡。順帶說明一下,我們把牌堆頂的牌定義為1號牌,從上往下第二張定義為2號牌,依此類推。

這題可以用佇列來維護:

第乙個操作移一次,第二個操作移p次就星

for (int i=1;i<=m/n;i++)

for (int j=1;j<=n;j++)

}

有乙個車站,每天都會有n輛車進站,進站按從1到n的順序進站。現在車站的站長想讓這些火車按照特定的順序出站,問可以做到嗎?

當n為5時,出站順序若為1 2 3 4 5,可以做到,但是順序若為5 4 1 2 3,則不行。

我們可以把火車進站就是壓棧,出站則是彈棧。

這題是棧的模板題(這nm還能不是棧的模板題,題面都說了)

隨便開三個棧就行了

while (yt<=n)

else

}

乙個表示式中包括變數、常量、操作符、圓括號,圓括號可以巢狀, 編寫程式判斷表示式中的括號是否正確匹配。輸入任意乙個表示式,判斷其中括號是否匹配,匹配, 輸出yes, 不匹配,輸出no。(表示式的長度小於50)

這個不一定要開棧,只需要開乙個t,遇到左括號+1,遇到右括號-1,當t為負數,也就是右括號比左括號多時,就不匹配。如果處理完後t為0,則匹配,否則也不匹配。

for (int i=0;i

棧與佇列 建立棧 佇列

陣列棧 完成stack createstack int maxelements 函式,該函式建立乙個棧,maxelements為與分配的棧空間大小 棧可用空間為array 0,maxelements 1 typedef int elemtype struct stackrecord typedef ...

實驗三 棧與佇列的應用

1 依據順序棧儲存結構的定義如下 利用以下的常用操作設計演算法並實現完成2 3題 define maxsize 100 typedef char selemtype typedef struct sqstack 除錯並測試常用操作如下 intinitstack sqstack s intstacke...

棧 佇列與優先佇列

123 45 include stack int s 入棧 push 出棧 pop 取棧頂top 123 45 include queue int s 入隊 push 出隊 pop 取隊首元素 front 不刪除 123 4priority queue int pq 入隊 push 出隊 pop 取...