Python演算法入門 第2章 2 1,棧 習題

2021-08-30 19:34:24 字數 1889 閱讀 5367

以下問題節選自《啊哈!演算法》。作者**的傳送門:啊哈磊的官方**,啊哈論壇,

星期天小哼和小哈約在一起玩桌遊, 他們正在玩乙個非常古怪的撲克遊戲——「小貓釣魚」。遊戲的規則是這樣的:將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,並依次放到自己手中牌的末尾。當任意一人手中的牌全部出完時,遊戲結束,對手獲勝。假如遊戲開始時,小哼手中有 6 張牌,順序為 2 4 1 2 5 6,小哈手中也有 6 張牌,順序為 3 1 3 5 6 4,最終誰會獲勝呢?現在你可以拿出紙牌來試一試。接下來請你寫乙個程式來自動判斷誰將獲勝。這裡我們做乙個約定,小哼和小哈手中牌的牌面只有 1~9。

python**實現

class solution():

'''棧與佇列共同操作

'''def cat(self, x, y):

#將兩個人手中的牌變成陣列

queue_x = [i for i in x]

queue_y = [i for i in y]

#將桌面變成乙個棧,用來進出操作

stack_table =

#如果列表不為空,則迴圈操作

while len(queue_x) is not 0 and len(queue_y) is not 0:

# 判斷x打出的牌是否在stack_table裡面,如果在裡面,就將兩張牌中間對應的牌加到x裡面

if queue_x[0] in stack_table:

index_x = stack_table.index(queue_x[0])

queue_x.pop(0)

len_x = len(stack_table)

for i in range(len_x - index_x):

stack_table.pop(len_x-i-1)

else:

queue_x.pop(0)

# 判斷y打出的牌是否在stack_table裡面,如果在裡面,就將兩張牌中間對應的牌加到y裡面

if queue_y[0] in stack_table:

index_y = stack_table.index(queue_y[0])

queue_y.pop(0)

len_y = len(stack_table)

for i in range(len_y - index_y):

stack_table.pop(len_y-i-1)

else:

queue_y.pop(0)

if len(queue_x) == 0:

return "啊哈贏了"

if len(queue_y) == 0:

return "嗯哼贏了"

#主函式

if __name__ == "__main__":

a = solution()

print(a.cat('241256', '313564'))

c語言**實現

#include struct queue

;struct stack

; int main()

//小哈手上的6張牌

for(i=1;i<=6;i++)

while(q1.head0) //如果桌上有牌則依次輸出桌上的牌

else

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

}else

else

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

}getchar();getchar();

return 0;

}

Python演算法入門 第1章 2,氣泡排序

class solution 氣泡排序 從大到小排序 def maopao self,x 有多少數字,迴圈多少次 for i in range len x 依次讀取列表x裡面的資料,並與下乙個數進行比較 for j in range len x 1 如果小於下乙個數,就將兩個數交換位置 if x j...

python入門 第8章 切片

1 對list進行切片 小結如下 切面最多可以有三個引數,引數之間使用 來分開,如果第乙個引數不寫,表示從第乙個元素開始,如果第二個引數不寫,表示到最後乙個元素 如果第乙個引數和第二個引數都寫了,那麼取值的時候從索引為第乙個引數開始,到第二個引數索引之間取值,不包含第二個索引對應的值 如果第三個引數...

Python入門 第8章 函式

此系列文章的創作初衷是作為讀書過程中的筆記,而非教程類文章。def greet print hello def greetuser name print hello,name.title def greet 顯示簡單的問候語 print hello 乙個良好的 編寫習慣是,在每個函式頭後都用文件字串...