Java贪心算法: 田忌赛马

来源:互联网 发布:软件项目风险控制措施 编辑:程序博客网 时间:2024/05/16 09:07
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();
        }


    }
}
0 0