杭电OJ1052 田忌赛马

贪心算法

昨天参考别人的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-- }

}

其实为了便于理解,我当初还做了一张表

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值