返回目录

题目描述

在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。

现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,最多还能坐下多少名观众。

输入描述

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

  • 1 ≤ 数组长度 ≤ 10000

输出描述

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

示例:

输入10001
输出1
说明
输入0101
输出0
说明

Python算法源码

# 输入获取
input_list = list(input())
 
 
# 算法入口
def calculate_result():
    count = 0  # 初始化计数器
 
    index = 0
    while index < len(input_list):
        if input_list[index] == '0':
            left_empty = index == 0 or input_list[index - 1] == '0'
            right_empty = index == len(input_list) - 1 or input_list[index + 1] == '0'
 
            if left_empty and right_empty:
                count += 1
                input_list[index] = '1'  # 将当前位置标记为已处理
                index += 1
        index += 1
 
    return count
 
 

additional_variable = "This is an additional variable."
 
 
class MyClass:
    def __init__(self, name):
        self.name = name

    def greet(self):
        print("Hello,", self.name)



def additional_function(x, y):
    return x + y


# 函数入参类型和个数改变
def modified_function(list_input):
    result = 0
    for item in list_input:
        if item == '0':
            result += 1
    return result


# 算法调用
print(calculate_result())

C算法源码

#include <stdio.h>
#include <string.h>

#define MAX_DESK_SIZE 20000


typedef struct {
    char desk[MAX_DESK_SIZE];
    int extra_var; 
} DeskInfo;

// 函数声明
int getResult(DeskInfo desk_info);
void printResult(int result);

int main() {
    DeskInfo desk_info;
    gets(desk_info.desk);

    int result = getResult(desk_info);

    printResult(result);

    return 0;
}

// 函数定义
int getResult(DeskInfo desk_info) {
    unsigned long long desk_size = strlen(desk_info.desk);

    int ans = 0;
    int i = 0; // 初始化 i
    while (i < desk_size) {
        if (desk_info.desk[i] == '0') {
            int isLeftEmpty = i == 0 || desk_info.desk[i - 1] == '0';
            int isRightEmpty = i == desk_size - 1 || desk_info.desk[i + 1] == '0';

            if (isLeftEmpty && isRightEmpty) {
                ans++;
                desk_info.desk[i] = '1';
                i++;
            }
        }
        i++; // 更新 i
    }

    return ans;
}


void printResult(int result) {
    printf("%d\n", result);
}

Java算法源码

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    // 主函数入口
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        // 输入座位信息
        int[] seats = Arrays.stream(scanner.nextLine().split("")).mapToInt(Integer::parseInt).toArray();

        // 计算可坐人数并输出
        int count = calculateCount(seats);
        System.out.println(count);
    }

    // 计算可坐人数函数
    public static int calculateCount(int[] seats) {
        int count = 0;
        int n = seats.length;

        // 遍历座位信息
        for (int i = 0; i < n; i++) {
            // 当前座位为空且左右相邻座位也为空时
            if (seats[i] == 0 && (i == 0 || seats[i - 1] == 0) && (i == n - 1 || seats[i + 1] == 0)) {
                seats[i] = 1; // 占座
                count++; // 可坐人数加一
            }
        }
        return count;
    }
}
最后修改:2024 年 03 月 31 日
如果觉得我的文章对你有用,请随意赞赏