田忌赛马870变体

Arrays.sort() lambda貌似只能用于integer[],不能用于int[], 要写,(integer a, integer b)-
逆序加上 Collectiona.reverseOrder()
田忌赛马是排序从最快的马开始,可以赢就赢,不可以赢,就用垫底的应付,一对一,

但是变体就是数量不同
那么显然,比如
1 -1-1-8
0-6-7和加油包2
2-6-7与0-6-9
所以应该从最小的开始比
选出加油的和不加油的,可以赢的最小值
但是也有问题
比如
1-8
0-5-7和2
这样2-5-7就不如0-5-9了
因此必须得分情况

第一,当对方数量更多的时候,你只需要比较和你一样的靠左的即可

第二,当对方数量一样或者更少的时候,就变成了田忌赛马
所以!不是从对方最快的开始,而是截取小于等于你的数量的最大值
比如1-1-1-8,你只有三个,那就只比较1-1-1即可。
然后就是按照最大值,和加上加油包的,选一个取胜的最小值出战,保存实力即可!…
比如6-7
6-7和2,6-7-8-9,排出8即可,此时只剩下7了
OK
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务