田忌賽馬 解題報告

2021-08-25 09:07:54 字數 1077 閱讀 9840

描述:田忌與齊王賽馬,雙方各有n匹馬參賽(n<=100),每場比賽賭注為1兩**,現已知齊王與田忌的每匹馬的速度,並且齊王肯定是按馬的速度從快到慢出場,現要你寫乙個程式幫助田忌計算他最好的結果是贏多少兩**(輸用負數表示)。

輸入:

多個測例。

每個測例三行:第一行乙個整數n,表示雙方各有n匹馬;第二行n個整數分別表示田忌的n匹馬的速度;第三行n個整數分別表示齊王的n匹馬的速度。

n=0表示輸入結束。

輸出:每行乙個整數,田忌最多能贏多少兩**。

輸入樣例: 3

92 83 71

95 87 74

220 20

20 20

220 19

22 18

320 20 10

20 20 100

輸出樣例: 1

000

解題思路:

先把田忌與齊王的馬的速度進行由小到大的排序,然後用田忌的慢馬去和齊王的快馬先比較,一直找到比齊王的馬快中的最快的並標記已比過,這樣就可以保證田忌的馬能夠達到合理的利用,可以貪到更多的贏的場次,然後就是求出它們平局的場數並標記,用總數減去他們就是輸的場數,從而就可以得出了。

**如下:

code:

#include

#include

using

namespacestd;

#definemax106

structspeed

; intcmp(speeda,speedb)

intmain()

for(i=0;i

sort(num1,num1+n,cmp);

sort(num2,num2+n,cmp);

signed

intsum1=0,sum2=0;

for(i=0;i

} }

} for(i=0;i

} }

} cout<<2*sum1-n+sum2>n;

} return0;

}

nyoj 田忌賽馬

題目大意 第一行給出n表示有n場比賽,以下兩行分別給出n個數,分別表示田忌和齊王n匹馬的速度,贏家從輸者手中獲得200錢,求田忌最多能贏多少錢。思路 1.先把兩者的馬按速度從大到小排序 2.從最大的馬開始比較,若出現齊王的馬比田忌的馬快,先暫停。3.將此時齊王最快的馬和田忌最慢的馬比賽,田忌輸掉一局...

1257 田忌賽馬

時間限制 1 sec 記憶體限制 128 mb 提交 97 解決 50 提交 狀態 討論版 命題人 外部匯入 賽馬是一古老的遊戲,早在西元前四世紀的中國,處在諸侯割據的狀態,歷史上稱為 戰國時期 在魏國作官的孫臏,因為受到同僚龐涓的 被齊國使臣救出後,到達齊國國都。賽馬是當時最受齊國貴族歡迎的娛樂專...

田忌賽馬(貪心)

描述 中國古代的歷史故事 田忌賽馬 是為大家所熟知的。話說齊王和田忌又要賽馬了,他們各派出n匹馬,每場比賽,輸的一方將要給贏的一方200兩 如果是平局的話,雙方都不必拿出錢。現在每匹馬的速度值是固定而且已知的,而齊王出馬也不管田忌的出馬順序。請問田忌該如何安排自己的馬去對抗齊王的馬,才能贏取最多的錢...