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


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值