贪心算法
昨天参考别人的AC了, 今天再来分析一下
1、贪心的前提是排序,把田忌马序列和国王马序列都由小到大排序是解决问题的第一步
2、排序后开始比较
设置四个状态指针,田忌min,, 田忌max, 国王min, 国王max;胜局数 win = 0;
for ( 一共比较n次,所以循环n次)
首先比较最慢的马
if ( 田忌min > 国王min ) { 直接比较,田忌和国王指针前移,win++ }
else {
// 此时田忌最慢的马比国王最慢的马慢或速度相等,如果直接比要么输一局损失200元要么平局,如果田忌这一局一定要输就要把国王最快的马消耗掉,
此时最快的马指的是比当前田忌最快的马还快,即,国王的马中使田忌一定会输的最快的马,所以要先比较双方最快的马
if ( 田忌max > 国王max ) {直接比较,田忌和国王指针前移,win++ }
else if ( 田忌min < 国王max ) {直接比较,田忌和国王指针移动,win-- }
}
其实为了便于理解,我当初还做了一张表