1257 田忌賽馬

2021-08-21 19:22:15 字數 1474 閱讀 7687

時間限制: 1 sec  記憶體限制: 128 mb

提交: 97  解決: 50

[提交][狀態][討論版][命題人:外部匯入]

賽馬是一古老的遊戲,早在西元前四世紀的中國,處在諸侯割據的狀態,歷史上稱為「戰國時期」。在魏國作官的孫臏,因為受到同僚龐涓的**,被齊國使臣救出後,到達齊國國都。 

賽馬是當時最受齊國貴族歡迎的娛樂專案。上至國王,下到大臣,常常以賽馬取樂,並以重金賭輸贏。田忌多次與國王及其他大臣賭輸贏,屢賭屢輸。一天他賽馬又輸了,回家後悶悶不樂。孫臏安慰他說:「下次有機會帶我到馬場看看,也許我能幫你。」 

孫臏仔細觀察後發現,田忌的馬和其他人的馬相差並不遠,只是策略運用不當,以致失敗。 

比賽前田忌按照孫臏的主意,用上等馬鞍將下等馬裝飾起來,冒充上等馬,與齊王的上等馬比賽。第二場比賽,還是按照孫臏的安排,田忌用自己的上等馬與國王的中等馬比賽,在一片喝彩中,只見田忌的馬竟然衝到齊王的馬前面,贏了第二場。關鍵的第三場,田忌的中等馬和國王的下等馬比賽,田忌的馬又一次衝到國王的馬前面,結果二比一,田忌贏了國王。 

就是這麼簡單,現在淵子也來賽一賽馬。假設每匹馬都有恆定的速度,所以速度大的馬一定比速度小的馬先到終點(沒有意外!!)。不允許出現平局。最後誰贏的場數多於一半(不包括一半),誰就是贏家(可能沒有贏家)。淵子有n(1≤n≤1000)匹馬參加比賽。對手的馬的數量與淵子馬的數量一樣,並且知道所有的馬的速度。聰明的你來**一下這場世紀之戰的結果,看看淵子能否贏得比賽。 

輸入有多組測試資料。 

每組測試資料報括3行: 

第一行輸入n(1≤n≤1000)。表示馬的數量。 

第二行有n個整型數字,即淵子的n匹馬的速度。 

第三行有n個整型數字,即對手的n匹馬的速度。 

當n為0時退出。 

若通過聰明的你精心安排,如果淵子能贏得比賽,那麼輸出「yes」。 

否則輸出「no」。

5

2 3 3 4 5

1 2 3 4 5

42 2 1 2

2 2 3 1

0

yes

no

乙個貪心演算法的應用,從淵子的第一匹馬開始,如果能夠打敗對手,就參與計數(只統計勝場),否則對手的馬不變,淵子換上自己的下一匹馬,下面是ac**

#include

#include

using namespace std;

int main(void)

;int b[1000] = ;

if(n == 0)

for(i = 0; i < n; i++)

for(j = 0; j < n; j++)

sort(a, a+n);

sort(b, b+n);

ans = 0;

j = 0;

i = 0;

for( ; i < n; i++)

else}}

if(ans > (n/2))

else

}return 0;

nyoj 田忌賽馬

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

田忌賽馬(貪心)

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

田忌賽馬(貪心

給出田忌和齊王各馬的速度,求最優得分 我的貪心策略 當然是錯的 1,用我方在 可以 戰勝 或 比平 對方最慢的馬 的馬 中 最慢的馬 去比 對方最慢的馬 2,直到我方最快的馬也下場了,剩下的馬預設全部戰敗 這種策略明顯是不對的 我方的快馬的貪心策略應該是擊敗能力範圍內對方最快的馬 浪費最小 我方的慢...