爬动的蠕虫

一、明确需求

  • 输入井的深度n、蠕虫每分钟上爬距离u、休息时下滑距离d。
  • 若蠕虫能爬出井,输出所需时间(分钟);若不能,输出 "The worm cannot climb out of the well."。
  • 蠕虫只要在某次上爬过程中头部到达井口(高度\(\geq n\)),就完成任务。

二、设计思路

  • 特殊情况判断:若\(u \leq d\),蠕虫上爬后下滑,高度无法持续增加,必然爬不出,直接输出对应提示。
  • 模拟爬动过程:当\(u > d\)时,模拟蠕虫 "上爬一分钟 + 休息下滑一分钟" 的循环,直到爬出井口。需记录当前高度与时间,每次上爬后检查是否爬出。

三、代码实现步骤(C++)

步骤 1:引入头文件与命名空间

使用#include<bits/stdc++.h>包含常用标准库,using namespace std;简化输入输出操作(无需每次写std::)。

cpp

运行

复制代码
#include<bits/stdc++.h>
using namespace std;
步骤 2:编写主函数main

程序从main函数开始执行,所有逻辑在此实现。

cpp

运行

复制代码
int main() {
    // 后续代码写在这里
    return 0; // 程序正常结束
}
步骤 3:输入数据

读取井深n、上爬距离u、下滑距离d。

cpp

运行

复制代码
int n, u, d;
cin >> n >> u >> d;
步骤 4:处理爬不出的情况

若\(u \leq d\),直接输出提示并结束程序。

cpp

运行

复制代码
if (u <= d) {
    cout << "The worm cannot climb out of the well." << endl;
    return 0;
}
步骤 5:模拟爬动过程

定义变量j记录当前高度,te记录时间,循环模拟 "上爬 + 检查 + 下滑" 过程。

cpp

运行

复制代码
int j = 0, te = 0;
while (true) {
    // 上爬一分钟
    j += u;
    te++;
    // 检查是否爬出
    if (j >= n) {
        cout << te;
        return 0;
    }
    // 休息下滑一分钟
    j -= d;
    te++;
}

四、完整代码

cpp

运行

复制代码
#include<bits/stdc++.h>
using namespace std;
int main() {
    int n, u, d;
    cin >> n >> u >> d;
    if (u <= d) {
        cout << "The worm cannot climb out of the well." << endl;
        return 0;
    }
    int j = 0, te = 0;
    while (true) {
        j += u;
        te++;
        if (j >= n) {
            cout << te;
            return 0;
        }
        j -= d;
        te++;
    }
    return 0;
}

五、测试示例

测试 1:能爬出

输入:

plaintext

复制代码
10 2 1

模拟过程(关键步骤):

  • 多次 "上爬2→下滑1" 后,第17分钟上爬时,高度达到10,输出17,与样例一致。

测试 2:爬不出

输入:

plaintext

复制代码
20 1 3

因\(u=1 \leq d=3\),直接输出 "The worm cannot climb out of the well.",与样例一致。

大家还可以在我的bilibili(编程题小白日记)搜索 ···0052.爬动的蠕虫··· 找到这道题的视频解析

相关推荐
暴力求解13 小时前
数据结构---二叉树及堆的实现
数据结构·算法·二叉树
超梦dasgg13 小时前
并查集(Union-Find)详解 + Java 完整实现
java·数据结构·算法·图搜索
仍然.13 小时前
算法题目---队列+宽搜(BFS)
算法·宽度优先
AbandonForce13 小时前
从入门到入土:二分查找算法
数据结构·算法
仰泳之鹅13 小时前
【C语言】动态内存管理
c语言·数据结构·算法
心中有国也有家13 小时前
CANN 学习新范式:cann-learning-hub 如何让昇腾入门不再「劝退」
人工智能·经验分享·笔记·学习·算法
LB211213 小时前
C++通讯录课设(西安石油大学)
开发语言·c++·算法
AI算法沐枫13 小时前
机器学习知识点:正则化
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
手写码匠13 小时前
从零实现一个轻量级向量搜索引擎(Python 版)
人工智能·深度学习·算法·aigc
学习中.........13 小时前
多目标优化:遗传算法详解
人工智能·算法·机器学习