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();

        }

    }

}

    原文作者:贪心算法
    原文地址: https://blog.csdn.net/raven08988/article/details/50957344
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞