华为OD机试 C++【找座位】

题目

在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。
现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,最多还能坐下多少名观众。

输入描述
一个数组,用来标识某一排座位中,每个座位是否已经坐人。0表示该座位没有坐人,1表示该座位已经坐人。

1 ≤ 数组长度 ≤ 10000
输出描述
整数,在不移动现有观众座位的情况下,最多还能坐下多少名观众。

用例
输入 10001
输出 1

解题思路

1、遍历座位数组,统计连续的空座位数。
2、每两个连续的空座位可以容纳一个观众,因为观众之间需要至少一个空位。
3、计算出每段连续空座位能容纳的观众数,并累加得到最终结果。
具体实现时,可以使用一个变量记录当前连续的空座位数,遍历座位数组,当遇到已落座的座位时,计算当前连续的空座位能容纳的观众数并累加到最终结果中,然后将连续空座位数重置为0,继续遍历。最后返回累加的观众数即为最多能容纳的观众数。

代码

#include 

你可能感兴趣的:(华为od,c++,开发语言,华为机考,华为机试)