1. 程式人生 > >4.14 排成一條線的紙牌博弈問題

4.14 排成一條線的紙牌博弈問題

題目】:

  給定一個整型陣列arr,代表數值不同的紙牌排成一條線。玩家A和玩家B依次拿走每張紙牌,規定玩家A先拿,玩家B後拿,但是每個玩家每次只能拿走最左或最右的紙牌,玩家A和玩家B都絕頂聰明。請返回最後獲勝者的分數

  舉例:

    arr=[1, 2, 100, 4]

    開始時玩家A只能拿走1或4。如果玩家A拿走1,則排列變為[2, 100, 4],接下來玩家B可以拿走2或4,然後繼續輪到玩家A。如果開始時玩家A拿走4,則排列變為[1, 2, 100],接下來玩家B可以拿走1或100,然後繼續輪到玩家A。玩家A作為聰明絕頂的人不會先拿4,因為拿4之後,玩家B將拿走100。所以玩家A會先拿1,讓排列變為[2, 100, 4],接下來玩家B不管怎麼選,100都會被玩家A拿走。玩家A會獲勝,分數為101。所以返回101

    arr=[1, 100, 2]

    開始時玩家A不管拿1還是2,玩家B作為絕頂聰明的人,都會把100拿走。玩家B會獲勝,分數為100。所以返回100

 

題目來源:左程雲老師《程式設計師程式碼面試指南》