1. 程式人生 > >Java貪心演算法: 田忌賽馬

Java貪心演算法: 田忌賽馬

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class Main{ 
    public static void main(String args[]){
        int n, m;
        List<Integer>  vTian=new ArrayList<Integer>();
        List<Integer>  vQi=new ArrayList<Integer>();
        Scanner in=new Scanner(System.in);




        while(true){
            n=in.nextInt();
            if(n==0) break;


            //輸入資料  
            for(int i = 0; i < n; ++i)
            {
                vTian.add(in.nextInt());
            }
            for(int i = 0; i < n; ++i)
            {
                vQi.add(in.nextInt());
            }
            //處理資料  
            Collections.sort(vTian);
            Collections.sort(vQi);


            int i=0, j=0, x=n-1, y=n-1,cnt=0;
            boolean bLast=true;


            while(bLast)
            {
                //是否是最後一匹馬  
                if(x==i)
                    bLast=false;


                if(vTian.get(x) > vQi.get(y))
                {//如果田忌當前最好的馬可以勝齊王最好的馬,那麼比一場  
                    x--;
                    y--;
                    cnt+=200;
                }
                else if(vTian.get(i)> vQi.get(j))
                {//如果田忌當前最差的馬可以勝齊王最差的馬,那麼比一場  
                    i++;
                    j++;
                    cnt += 200;
                }
                else
                {//否則,讓田忌最差的馬和齊王最好的好比一場  
                    if(vTian.get(i) < vQi.get(y))
                        cnt -= 200;
                    i++;
                    y--;
                }
            }
            System.out.println(cnt);
            vTian.clear();
            vQi.clear();
        }


    }
}

相關推薦

Java貪心演算法 賽馬

import java.util.Scanner; import java.util.List; import java.util.ArrayList; import java.util.Collections; public class Main{      public

貪心演算法賽馬問題程式碼和註釋

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

bzoj1034: [ZJOI2008]泡泡堂BNB(貪心賽馬

就是 決定 ons 問題 tdi 出場 xxxx memory 空白 bzoj1034: [ZJOI2008]泡泡堂BNB   Time Limit: 10 Sec   Memory Limit: 162 MB Description   第XXXX屆NOI期間,為了加強

貪心演算法--賽馬

Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse ra

zcmu1059: 賽馬 貪心演算法

1059: 田忌賽馬時間限制: 1 Sec  記憶體限制: 128 MB提交: 1303  解決: 347[提交][狀態][討論版]題目描述田忌和齊王賽馬,兩人各出n匹馬,贏一場比賽得200兩銀子,輸了賠200銀子,平局不賠不賺.已知兩人每匹馬的速度,問田忌最多能贏多少銀子.

3266--貪心演算法--賽馬

題意: 田忌賽馬的故事,如果田忌贏了一把就贏200如果輸了就-200,給出馬匹的速度,求田忌的最大收益。 思路: 分三種大情況, 1.如果田忌的最快的馬能贏國王最快的馬那就比, 2.如果不

[Poj2287][Tyvj1048]賽馬 (貪心+DP)

div color ret 很多 nbsp algo 一道 include money 瞎扯 很經典的一道題 考前才打 我太菜了QAQ 就是先貪心排序了好 然後在DP 這樣比直接DP更容易理解 (其實這題做法還有很多) 代碼 1 #include&l

HDU1052 貪心賽馬

 並沒有想象的簡單,思想就是田忌最弱的馬儘量去拼King最厲害的馬,但是還要看這個馬死的值不值。 比如 田忌 200  20  King 100 10,這個時候你就不能直接讓20去拼掉100。 解決的方法就是先比較末尾的情況,然後比較頭部的情況判斷末尾的情況如何處理。

賽馬 poj 2287 (貪心,動態規劃,貪心+動態規劃)

      題目連結 貪心 ;1:如果田忌的最快馬快於齊王的最快馬,比一場            2: 如果田忌的最快馬慢於齊王的最快馬,則用田忌的最慢馬和齊王的最快馬比賽一場           3: 如果田忌的最快馬和齊王的最快馬一樣快,則比較田忌的最慢馬和齊王的最慢

POJ 2287 Tian Ji -- The Horse Racing&&浙江科技學院第十三屆程式設計競賽1006 賽馬後傳(貪心)

思路:如果田忌最慢的比齊王最慢的快,或者田忌最快的比齊王最快的快,那麼就比,否則讓田忌最慢的和齊王最快的比。 #include<map> #include<queue> #in

貪心】HDU 1052 Tian Ji -- The Horse Racing n匹馬的“賽馬

題意:田忌賽馬。田忌和齊王各有n匹馬,輸入田忌的馬的速度和齊王的馬的速度。每一輪田忌贏了就得200兩銀子,平就得0兩,輸了就失去200兩銀子。問田忌最多能得到多少。題目的策略是貪心,分析見leokan大牛的blog: http://hi.baidu.com/leokan/b

Tian Ji -- The Horse Racing(賽馬模擬)+貪心

Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse ra

LA 3266&HDU 1052 Tian Ji -- The Horse Racing(賽馬貪心

Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse r

hdu 1052 賽馬貪心

自己寫的時候,wa過好多次,總是漏了一些可能性,感覺自己現在拿到題沒有辦法看透他的本質,我一個學長拿到題總能用短到嚇人的程式碼長度a掉,又快又短 ,分析問題時候腦子要清醒,有一種巨集觀的思想 題

1052】 賽馬賽馬貪心或雙端佇列)

Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse ra

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

題意是:田忌賽馬的故事,兩個人賽馬,第一行輸入的數是兩個人馬的匹數,都是相同的,第二行輸入的是田忌的馬的強弱值,第三行輸入的是國王馬的強弱值,然後如果n==0則程式結束。 解題思路:貪心思想 如果田

賽馬-貪心正確性證明

演算法可以用DP,或者給每匹馬連線賦權變為二分圖最佳匹配,還有就是貪心了。1.當田忌最慢的馬比齊王最慢的馬快,贏一場先2.當田忌最慢的馬比齊王最慢的馬慢,和齊王最快的馬比,輸一場3.當田忌最快的馬比齊王最快的馬快時,贏一場先。4.當田忌最快的馬比齊王最快的馬慢時,拿最慢的馬和

POJ 2287 - Tian Ji -- The Horse Racing(賽馬) 題解

ons for amp 匹配 void 代碼 div line 比賽 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:http://poj.org/problem?id=2287 題目大意: 田忌賽馬的故事就不用多說了吧.... 輸

P1650 賽馬

post 題目 b+ 數列 DC 代碼 bit main LG 題目描述 我國歷史上有個著名的故事: 那是在2300年以前。齊國的大將軍田忌喜歡賽馬。他經常和齊王賽馬。他和齊王都有三匹馬:常規馬,上級馬,超級馬。一共賽三局,每局的勝者可以從負者這裏取得200銀幣。每匹馬只能

20180527模擬賽T1——新賽馬

通過 行為 二次 resources 奇跡 三次 出場 github 描述 【問題描述】 (註:此題為d2t2-難度) 田忌又在跟大王van賽馬的遊戲 田忌與大王一共有2n匹馬,每個馬都有一個能力值x,1<=x<=2n且每匹馬的x互不相同。每次田忌與大王放出一匹