田忌賽馬(POJ 2287)

2021-05-23 19:10:09 字數 776 閱讀 9718

問題描述:你一定聽過田忌賽馬的故事吧?

如果3匹馬變成1000匹,齊王仍然讓他的馬按從優到劣的順序出賽,田忌可以按任意順序選擇他的賽馬出賽。贏一局,田忌可以得到200兩銀子,輸一局,田忌就要輸掉200兩銀子,平局的話不輸不贏。

請問田忌最多能贏多少銀子?

關於輸入:

輸入包含多組測試資料.

每組測試資料的第一行是乙個整數n(1<=n<=1000),表示田忌和齊王都擁有n匹馬。接下來一行是n個整數,表示田忌的馬的速度,下一行也是n個整數,表示齊王的馬的速度。

輸入的最後以乙個0表示結束。

關於輸出:

對每組資料,輸出乙個整數,表示田忌至多可以贏多少銀子,如果田忌贏不了,就輸出乙個負數,表示田忌最少要輸多少銀子。

例子輸入:

3

92 83 71

95 87 74

220 20

20 20

220 19

22 18

0

例子輸出:
200

00

解題思路:
貪心演算法。

如果當前最好的馬可以勝齊王最好的馬,那麼讓這兩匹馬比一場。

如果當前最差的馬能勝齊王最差的馬,那麼讓這兩匹馬比一場。

如果上面兩個條件都不滿足,那麼讓當前最差的馬和齊王最好的馬比一場。

除開排序,這個演算法的時間複雜度可以做到o(n)。

**:

POJ 2287 田忌賽馬(貪心)

2.accepted 雙方各有n匹戰鬥力各異的馬,分別派出來pk,假設對方先出牌,我方後出,求我方最多能勝幾場 description poj2287田忌賽馬 貪心 author michael ming date 2019 7 2 23 55 modified by include include...

POJ 2287 田忌賽馬 貪心演算法

田忌賽馬,大致題意是田忌和國王賽馬,贏一局得200元,輸一局輸掉200元,平局則財產不動。先輸入乙個整數n,接下來一行是田忌的n匹馬,下一行是國王的n匹馬。當n為0時結束。此題為貪心演算法解答,有兩種思路。思路二 1 開始也是先排序,可以使用sort快排 2 然後將田忌最大的馬與國王進行比較 3 如...

Poj 2287 田忌賽馬解題詳解(貪心思想)

題意是 田忌賽馬的故事,兩個人賽馬,第一行輸入的數是兩個人馬的匹数,都是相同的,第二行輸入的是田忌的馬的強弱值,第三行輸入的是國王馬的強弱值,然後如果n 0則程式結束。解題思路 貪心思想 如果田忌的最強馬大於國王的最強馬直接比 如果田忌的最強馬小如國王的最強馬拿最弱的那匹馬跟國王的最強馬比 如果田忌...