返回目录
题目描述
在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。
现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位的情况下,最多还能坐下多少名观众。
输入描述
一个数组,用来标识某一排座位中,每个座位是否已经坐人。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;
}
}
6 条评论
def main():
sum = 0
my_list = list(map(int, input().split()))
print(my_list)
i = 0
while i < len(my_list):
if len(my_list) == 1 and my_list[i] == 0:
sum = 1
break
elif my_list[i] == 1:
i += 2
elif (i == len(my_list) - 1 and my_list[i] == 0 ) or ( my_list[i] == 0 and my_list[i+1] == 0):
sum += 1
i += 2
print(sum)
if __name__ == '__main__':
main()
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]真题目录序号题目 密码输入检测 找座位 1螺旋数字矩阵 2最富裕的小家庭 3最长字符串的长度(一)[...]