拉馬車 佇列和棧

2022-09-13 05:18:12 字數 2035 閱讀 3959

小的時候,你玩過紙牌遊戲嗎?

有一種叫做「拉馬車」的遊戲,規則很簡單,卻很吸引小朋友。

其規則簡述如下:

假設參加遊戲的小朋友是a和b,遊戲開始的時候,他們得到的隨機的紙牌序列如下:

a方:[k, 8, x, k, a, 2, a, 9, 5, a]

b方:[2, 7, k, 5, j, 5, q, 6, k, 4]

其中的x表示「10」,我們忽略了紙牌的花色。

從a方開始,a、b雙方輪流出牌。

當輪到某一方出牌時,他從自己的紙牌佇列的頭部拿走一張,放到桌上,並且壓在最上面一張紙牌上(如果有的話)。

此例中,遊戲過程:

a出k,b出2,a出8,b出7,a出x,此時桌上的序列為:

k,2,8,7,x

當輪到b出牌時,他的牌k與桌上的紙牌序列中的k相同,則把包括k在內的以及兩個k之間的紙牌都贏回來,放入自己牌的隊尾。注意:為了操作方便,放入牌的順序是與桌上的順序相反的。

此時,a、b雙方的手裡牌為:

a方:[k, a, 2, a, 9, 5, a]

b方:[5, j, 5, q, 6, k, 4, k, x, 7, 8, 2, k]

贏牌的一方繼續出牌。也就是b接著出5,a出k,b出j,a出a,b出5,又贏牌了。

5,k,j,a,5

此時雙方手裡牌:

a方:[2, a, 9, 5, a]

b方:[q, 6, k, 4, k, x, 7, 8, 2, k, 5, a, j, k, 5]

注意:更多的時候贏牌的一方並不能把桌上的牌都贏走,而是拿走相同牌點及其中間的部分。但無論如何,都是贏牌的一方繼續出牌,有的時候剛一出牌又贏了,也是允許的。

當某一方出掉手裡最後一張牌,但無法從桌面上贏取牌時,遊戲立即結束。

對於本例的初始手牌情況下,最後a會輸掉,而b最後的手裡牌為:

9k2a62kax58k57kj5

本題的任務就是已知雙方初始牌序,計算遊戲結束時,贏的一方手裡的牌序。當遊戲無法結束時,輸出-1。

輸入為2行,2個串,分別表示a、b雙方初始手裡的牌序列。

輸出為1行,1個串,表示a先出牌,最後贏的一方手裡的牌序。

樣例輸入

96j5a898qa

6278a7q973

樣例輸出

2j9a7qa6q6889977

樣例輸入

25663k6x7448

j88a5kjxx45a

樣例輸出

6kaj458kxax885xj645

資料規模和約定

我們約定,輸入的串的長度不超過30

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

題解:直接模擬,說實話-1情況我並沒有考慮明白,只好設定乙個計數器,我能想到的就是雙方牌數相同.測試資料也並沒有這樣的資料,也真的是太水了0.0

#include

#define ll long long

#define inf 0x3f3f3f3f

#define pb push_back

#define rep(i,a,b) for(int i=a;i#define rep1(i,b,a) for(int i=b;i>=a;i--)

using

namespace

std;

const

int n=1e5+100;

ll arr[4][4];

int main()

pp=!pp;

}else

st.push(a),mp1[a]++;

if(q1.empty())

break;

}else

pp=!pp;

}else

st.push(a),mp1[a]++;

if(q2.empty())

break;

}pp=!pp;

}if(cnt==1e3)

if(q1.empty())

藍橋杯 歷屆試題 拉馬車 棧與佇列

問題描述 小的時候,你玩過紙牌遊戲嗎?有一種叫做 拉馬車 的遊戲,規則很簡單,卻很吸引小朋友。其規則簡述如下 假設參加遊戲的小朋友是a和b,遊戲開始的時候,他們得到的隨機的紙牌序列如下 a方 k,8,x,k,a,2,a,9,5,a b方 2,7,k,5,j,5,q,6,k,4 其中的x表示 10 我...

棧和佇列 單調佇列 單調棧

講解部落格鏈結 一 單調棧 1 什麼是單調棧?單調棧是指乙個棧內部元素具有嚴格單調性 單調遞增,單調遞減 的一種資料結構。2 單調棧的兩個性質 滿足從棧頂到棧底具有嚴格的單調性 滿足後進先出的特徵,越靠近棧底的元素越早的進棧。3 元素進棧的過程 對於當前進棧元素x 如果x 棧頂元素,x 進棧。否則 ...

棧和佇列 佇列

佇列 又一種特殊的線性表 佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 允許刪除的一端稱為隊頭 front 允許插入的一端稱為隊尾 rear 當佇列中沒有元素時稱為空佇列。佇列的修改是依先進先出的原則進行的。新來的成員總是加入隊尾 即不允許 加塞 每次離開的成員總是...