体育场找座位 - 华为OD统一考试(C卷)

OD统一考试(C卷)

分值: 100分

题目描述

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

输入描述

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

输出描述

整数,在不移动现有观众座位的情况下,最多还能坐下多少名观众。

示例1

复制代码
输入:
10001

输出:
1

示例2

复制代码
输入:
0101

输出:
0

备注

1 <= 数组长度 <= 10000

题解

通过贪心模拟的方法,遍历座位数组,统计连续的空座位并计算最多还能坐下多少名观众。在每次迭代中,检查当前座位及其相邻座位的状态,如果当前座位为空且两侧也为空,则可坐下一名观众。最后输出结果。

C++

cpp 复制代码
#include <iostream>
#include <vector>

using namespace std;

int main() {
    string seat;
    cin >> seat;

    int result = 0, n = seat.length();

    // pre 用于表示前一个座位的状态, 0表示该座位没有坐人,1表示该座位已经坐人
    char pre = '0';
    for(int i = 0; i < n; i++) {
        // seat[i] 没有人座 且两边都没有人座
        if(pre == '0' && seat[i] == '0' and (i + 1 == n or seat[i+1] == '0')) {
            result++;
            pre = '1';
            continue;
        }
        pre = seat[i];
    }

    cout << result << endl;

    return 0;
}

Java

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String seat = scanner.next();

        int result = 0, n = seat.length();

        // pre 用于表示前一个座位的状态, 0表示该座位没有坐人,1表示该座位已经坐人
        char pre = '0';
        for (int i = 0; i < n; i++) {
            // seat[i] 没有人座 且两边都没有人座
            if (pre == '0' && seat.charAt(i) == '0' && (i + 1 == n || seat.charAt(i + 1) == '0')) {
                result++;
                pre = '1';
                continue;
            }
            pre = seat.charAt(i);
        }

        System.out.println(result);
    }
}

Python

python 复制代码
seat = input().strip()
result, n = 0, len(seat)

# pre 用于表示前一个座位的状态, 0表示该座位没有坐人,1表示该座位已经坐人
pre = '0'
for i in range(n):
    # seat[i] 没有人座 且两边都没有人座
    if pre == '0' and seat[i] == '0' and (i + 1 == n or seat[i + 1] == '0'):
        result += 1
        pre = '1'
        continue
    pre = seat[i]

print(result)

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

相关推荐
HugoStudio_SWAN6 分钟前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
wxwx_bscxy32217 分钟前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
枫叶林FYL1 小时前
【群体智能集群控制工程实践】第3章 一致性协同算法
算法
TechWayfarer1 小时前
Cloudflare 9·15新政倒计时:用IP风险画像识别AI爬虫,防止误伤Googlebot
网络·人工智能·爬虫·python·tcp/ip·网络安全
禹凕1 小时前
滑动窗口算法实战指南
python·算法
evans在进步1 小时前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio
DisonTangor1 小时前
【腾讯混元雪耻归来】 Hy4 preview:770B 参数 MoE 旗舰模型,1M 上下文全面开源
人工智能·算法·开源·aigc·腾讯云·腾讯云ai代码助手
论文复现现场2 小时前
RTX 4090 24GB 能跑 Qwen3.8-27B 吗?单卡显存计算与云端部署指南
人工智能·python·云计算·llama·gpu算力
Patrick在香港2 小时前
模型路由器实测:12 个任务省 77%,旗舰过载时的降级要打出显式标记
python·llm·智能路由器·api·架构设计·成本优化
Looooking2 小时前
Python 之 jwt 令牌生成和校验
python·jwt