田忌赛马问题---贪心算法

你一定听过田忌赛马的故事吧? 
    如果3匹马变成1000匹,齐王仍然让他的马按从优到劣的顺序出赛,田忌可以按任意顺序选择他的赛马出赛。赢一局,田忌可以得到1两银子,输一局,田忌就要输掉1两银子,平局的话不输不赢。 请问田忌最多能赢多少银子? 

关于输入: 
  输入包含多组测试数据,每组测试数据的第一行是一个整数n(1<=n<=1000),表示田忌和齐王都拥有n匹马。接下来一行是n个整数,表示田忌的马的速度,下一行也是n个整数,表示齐王的马的速度。 输入的最后以一个0表示结束。 

关于输出: 

   对每组数据,输出一个整数,表示田忌至多可以赢多少银子,如果田忌赢不了,就输出一个负数,表示田忌最少要输多少银子。 

例子输入: 


92 83 71 
95 87 74 

20 20 
20 20 

20 19 
22 18 


例子输出: 
200 

0

 

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

class Solution {
	public static void main(String args[]) {
		int n,m;
		List list1 = new ArrayList();
		List list2 = new ArrayList();
		Scanner in = new Scanner(System.in);
		
		//输入两个组的数据
		while(true) {
			n = in.nextInt();
			if(n==0) break;
			
			for(int i=0;ilist2.get(y)) {
					x--;
					y--;
					count++;
				}else if(list1.get(i)>list2.get(j)) {
					//如果田忌最差的马可以胜过齐王最差的马,比一场
					i++;
					j++;
					count++;
				}else {
					//否则让田忌最差的马和齐王最好的马比一场,消耗掉齐王最好的马
					if(list1.get(i)

 

你可能感兴趣的:(笔试遇到的题)