模拟

ACM算法精华总结 算法从入门到放弃系列笔记
Study Date : 2020-01-20

1.算法思想

模拟即用程序来模拟题目中的操作,从而求解问题答案的思路。

2.解题要点

通常这类题目代码量大、操作多、思路繁复,因此要避免反复验证操作逻辑的正确性,浪费比赛时间。为了避免,可以从以下几点入手:

  • 动手前,在草稿纸上落实解题实现思路和流程。
  • 代码模块化,方便排错和调试
  • 对问题中需要转化变量进行同一,如将"YY-MM-DD"转化为毫秒值。

3.例题

一只一英寸的蠕虫位于 n 英寸深的井的底部。它每分钟向上爬 u 英寸,但是必须休息一分钟才能再次向上爬。在休息的时候,它滑落了 d 英寸。之后它将重复向上爬和休息的过程。蠕虫爬出井口花费了多长时间?我们将不足一分钟的部分算作一整分钟。如果蠕虫爬完后刚好到达井的顶部,我们也设作蠕虫已经爬出井口。

解题思路
直接使用程序模拟蠕虫爬井的过程就可以了。用一个循环重复蠕虫的爬井过程,当攀爬的长度超过或者等于井的深度时跳出。注意上爬和下滑时都要递增时间。

        if (d>=u){
            throw new RuntimeException("该蠕虫无法爬出去,再努力点吧!");
        }
        int time=0,distance = 0;
        // 爬行
        time++;
        distance+=u;
        while(distance >= n){
            // 休息时滑落
            time++;
            distance-=d;

            // 爬行
            time++;
            distance+=u;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值