现在的位置: 首页 > 综合 > 正文

田忌赛马(POJ 2287)

2013年04月24日 ⁄ 综合 ⁄ 共 1197字 ⁄ 字号 评论关闭

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

 

关于输入:

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

 

关于输出:

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

 

例子输入:

3

92 83 71
95 87 74
2
20 20
20 20
2
20 19
22 18
0
例子输出:
200

0
0

解题思路:
贪心算法

如果当前最好的马可以胜齐王最好的马,那么让这两匹马比一场。

如果当前最差的马能胜齐王最差的马,那么让这两匹马比一场。

如果上面两个条件都不满足,那么让当前最差的马和齐王最好的马比一场。

除开排序,这个算法的时间复杂度可以做到O(n)。

代码:


抱歉!评论已关闭.