Java貪心演算法: 田忌賽馬
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();
}
}
}