紙牌遊戲 小貓釣魚。來交流技術呀!!!

2021-10-04 20:52:32 字數 2142 閱讀 4989

題目:

星期天小a和小b約在一起玩桌遊,他們在玩乙個非常古怪的撲克遊戲—「小貓遊戲」。遊戲的規則是這樣的:將一副撲克牌平均分成兩份,每個人拿乙份。小a先拿出手中的第一張撲克牌放在桌子上,然後將小b也拿出手中的第一張撲克牌,並放在小a剛打出的撲克牌的上面,就像這樣倆個仁交替出牌。出牌時,如果某人打出牌與桌面上的牌面相同,即可將倆張相同的牌及其中間所夾得牌全部取走,並依次放到自己手中得最後,當任意乙個人手中的牌全部出完時,遊戲結束,對手獲勝。

假如遊戲開始時,小a手中有6張牌,順序為2 4 1 2 5 6,小b手中也有6張牌,順序為3 1 3 5 6 4,最終誰會獲勝呢?

要求接下來請你寫乙個自動判斷誰將獲勝的程式,這裡我們做乙個規定,小a 和小b 手中的牌面只有1~9。

題目分析

小a有2種操作,分別是出牌和贏牌。這相當於佇列的2個操作,出牌就是出隊,贏牌就是入隊。小b的操作和小a是一樣的。桌子就像乙個棧,沒打出乙個牌就相當於入棧,有人贏牌的時候將牌拿走相當於出棧。那麼如何知道桌子上面已經有哪些牌呢?最簡單的方法就是列舉桌子上面的每一張牌。

struct queue

;#再創乙個結構體來實現棧

struct stack

;#定義2個佇列q1和q2,q1表示小a手中的牌,q2表示小b手中的牌。定義乙個棧變數s來模擬桌子上面的牌

struct queue q1,q2;

struct stack s;

#初始化佇列q1和q2為空,此時2人手中都還沒有牌

q1.head=1;

q1.tail=1;

q2.head=1;

q2.tail=1;

#初始化棧s為空,最開始的時候桌上也沒有牌

s.top=

0;

#先讀入6張牌,放入小a手上

for(i=

1;i<

6;i++

)//再讀入6張牌,放到小b手中

for(i=

1;i<

6;i++

)

下面就是需要將桌子上面的每一張牌進行列舉看是否與2人的牌一樣,進行對比,下面就直接上全部的**啦~~~

#include

struct queue

;struct stack

;int

main()

//小b手上的6張牌

for(i=

1;i<=

6;i++

)while

(q1.head//當佇列不為空的時候執行迴圈

else

book[s.data[s.top]]==

0;q1.data[q1.tail]

=s.data[s.top]

; q1.tail++

; s.top--;}

if(q1.head==q1.tail)

break

;//小a手中的牌如果已經打完,遊戲結束

t=q2.data[q2.head]

;//小b 出一張牌

//判斷小b當前打出的牌是否能夠贏牌

if(book[t]==0

)//表明桌上麼有牌面為t的牌

else

//收回桌上牌面為t的牌

book[s.data[s.top]]==

0;q2.data[q2.tail]

=s.data[s.top]

; q2.tail++

; s.top--;}

}if(q2.head==q2.tail)

else

print

("\n桌上已經麼有牌了");

}else

else

print

("\n桌上已經沒有牌了");

}getchar()

;getchar()

;return0;

}

可以輸入以下資料進行驗證:

2 4 1 2 5 6

3 1 3 5 6 4

執行結果是:

小bwin

小b當前手中的牌是 1 6 5 2 3 4 1

桌上的牌是 3 4 5 6 2

大家快去試試吧~~,看看有沒有更方便的方法可以解決這個問題,歡迎來交流呀!!!

紙牌遊戲 小貓釣魚

小貓釣魚 遊戲規則 將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手上的第一張撲克牌放在桌子上,然後小哈也拿出手上的第一張撲克牌,放在小哼剛打出的牌上面,就這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上的牌的牌面相同,即可將兩張相同的牌及其中間所加的牌全部取走,並依次放到自己手中牌的末尾,當任意...

紙牌遊戲 小貓釣魚

星期天小哼和小哈約在一起玩桌遊,他們正在玩乙個非常古怪的撲克遊戲 小貓釣魚 遊戲的規則是這樣的 將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌...

紙牌遊戲 小貓釣魚

將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,並依次放到自己手中牌的末尾。當任意一人手中的...