田忌赛马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
逆序加上 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
全部评论
相关推荐
点赞 评论 收藏
分享
05-14 10:15
上海工程技术大学 管理咨询 点赞 评论 收藏
分享