华为OD机试 - 流浪地球(2025A卷 100分)

流浪地球

真题目录: 点击去查看

2025A卷 100分题型

题目描述

流浪地球计划在赤道上均匀部署了N个转向发动机,按位置顺序编号为0~N-1。

  1. 初始状态下所有的发动机都是未启动状态;
  2. 发动机启动的方式分为”手动启动"和”关联启动"两种方式;
  3. 如果在时刻1一个发动机被启动,下一个时刻2与之相邻的两个发动机就会被”关联启动”;
  4. 如果准备启动某个发动机时,它已经被启动了,则什么都不用做;
  5. 发动机0与发动机N-1是相邻的;

地球联合政府准备挑选某些发动机在某些时刻进行“手动启动”。当然最终所有的发动机都会被启动。

哪些发动机最晚被启动呢?

输入描述

  • 第一行两个数字N和E,中间有空格,N代表部署发动机的总个数,E代表计划手动启动的发动机总个数
    1<N<=1000,1<=E<=1000,E<=N
  • 接下来共E行,每行都是两个数字T和P,中间有空格。T代表发动机的手动启动时刻,P代表此
### 华为OD C语言 流浪地球 相关编程题解 #### 题目背景 在电影《流浪地球》中,人类为了拯救地球,启动了一项宏大的计划——推动地球离开太阳系。在这个过程中,涉及到大量的计算和逻辑处理工作。假设现在有一个场景,需要编写程序来模拟行星发动的工作状态检测。 #### 题目描述 给定一组整数数组 `engineStatus` 表示多个行星发动的状态值(0表示异常,1表示正常),以及一个正整数 `k` 表示连续工作的最小数量。如果存在至少 k 个连续正常的发动,则返回 true;否则返回 false。 #### 输入输出说明 - **输入**: 整型数组 engineStatus 和 正整数 k - **输出**: 布尔值 (true 或者 false) #### 示例代码实现 ```c #include <stdio.h> #include <stdbool.h> bool checkEngineStatus(int* engineStatus, int size, int k) { int count = 0; for (int i = 0; i < size; ++i) { if (engineStatus[i] == 1) { count++; if (count >= k) return true; } else { count = 0; } } return false; } // 主函数用于测 int main() { int status[] = {1, 0, 1, 1, 1}; int n = sizeof(status)/sizeof(status[0]); int k = 3; printf("%s\n", checkEngineStatus(status, n, k)? "True": "False"); return 0; } ``` 此段代码实现了对于给定的引擎状态列表进行遍历,并判断是否存在长度大于等于指定阈值 `k` 的连续正常运行区间[^1]。 #### 解析与扩展思考 该问题主要考察的是线性扫描算法的应用能力,在实际开发环境中可以进一步考虑如何提高性能,比如当数据量非常庞大时采用治法或者其他更高效的策略来进行优化[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无限码力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值