算法练习题27——疫情下的电影院(模拟)

server/2024/9/22 13:48:09/

其实思路还好 就是输入有点难搞

Java

import java.util.ArrayList;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();// 去掉输入字符串的方括号if (input.startsWith("[")) input = input.substring(1);if (input.endsWith("]")) input = input.substring(0, input.length() - 1);// 分割输入字符串并将其转换为整数列表String[] items = input.split(",");ArrayList<Integer> numbers = new ArrayList<>();for (String item : items) {numbers.add(Integer.parseInt(item.trim()));  // 去除多余空格并转换为整数}int n = numbers.size();int count = 0;// 遍历座位列表,计算可以安排的最大人数for (int i = 0; i < n; i++) {if (numbers.get(i) == 0) {boolean flag = true;// 检查前两个座位if (i > 0 && numbers.get(i - 1) == 1) {flag = false;}if (i > 1 && numbers.get(i - 2) == 1) {flag = false;}// 检查后两个座位if (i < n - 1 && numbers.get(i + 1) == 1) {flag = false;}if (i < n - 2 && numbers.get(i + 2) == 1) {flag = false;}// 如果该座位可以安排,计数并将其标记为已占用if (flag) {count++;numbers.set(i, 1);  // 将当前座位设置为已占用}}}// 输出可以安排的最大人数System.out.println(count);}
}
1.input.startsWith("[")
  • startsWith 是 Java String 类的一个方法,用于检查字符串是否以指定的字符或子字符串开始。
  • 如果 input 字符串以字符 [ 开头,input.startsWith("[") 返回 true
  • 当条件为 true 时,input = input.substring(1) 会被执行。
2. input.substring(1)
  • substring 是 Java String 类的另一个方法,返回一个新的字符串,这个字符串是从指定的起始位置(以 0 为基数)开始,直到原字符串的末尾。
  • input.substring(1) 表示从字符串的第二个字符(索引 1)开始,截取到字符串末尾。这样就去掉了第一个字符 [
  • 例如,"[1, 0, 0, 1]".substring(1) 将会返回 "1, 0, 0, 1]"
3. input.endsWith("]")
  • endsWith 方法用于检查字符串是否以指定的字符或子字符串结束。
  • 如果 input 字符串以字符 ] 结束,input.endsWith("]") 返回 true
  • 当条件为 true 时,input = input.substring(0, input.length() - 1) 会被执行。
4. input.substring(0, input.length() - 1)
  • input.length() 返回字符串的长度。
  • substring(0, input.length() - 1) 表示从字符串的第一个字符(索引 0)开始,截取到倒数第二个字符(索引为 length - 1 的字符不包括在内)。
  • 这样做的目的是去掉字符串最后一个字符 ]
  • 例如,"1, 0, 0, 1]".substring(0, input.length() - 1) 将返回 "1, 0, 0, 1"
5.split() 方法
  • split() 是 Java 中 String 类的一个方法,用于根据指定的正则表达式将字符串分割为一个字符串数组。
  • 参数 "," 代表以逗号作为分隔符。
  • 这个方法会扫描 input 字符串中的所有逗号,并在每个逗号处分割,返回一个字符串数组 items
6.trim() 方法
  • trim() 是 String 类的一个方法,用于去除字符串两端的空白字符(包括空格、制表符等)。
  • 它不会改变字符串中间的空格,只去除两端的空白字符。
为什么需要 trim()
  • 当你从输入中读取数据时,有时候每个元素之间可能会有多余的空格,比如 input = "1, 2, 0 , 1"。通过 split(",") 分割后,会得到像 " 2" 这样的字符串,这个字符串中有空格。
  • 使用 trim() 可以去掉这些多余的空格,确保你只处理纯数字部分。
示例
  • " 2 ".trim() 会返回 "2"
  • "0 ".trim() 会返回 "0"

C++ ihate

#include <bits/stdc++.h>
using namespace std;int main() {string input;getline(cin, input);// 去除前后的方括号if (!input.empty() && input[0] == '[') input.erase(input.begin());if (!input.empty() && input.back() == ']') input.pop_back();// 解析输入为整数向量vector<int> numbers;stringstream ss(input);string item;// 用一个简单的字符串流来分割和转换while (getline(ss, item, ',')) {numbers.push_back(stoi(item));  // 直接使用 stoi 转换为整数}int n = numbers.size();int count = 0;for (int i = 0; i < n; i++) {if (numbers[i] == 0) {bool flag = true;// 检查当前位置前面两个 if (i > 0 && numbers[i - 1] == 1) {flag = false;}if (i > 1 && numbers[i - 2] == 1) {flag = false;}// 检查当前位置后面两个 if (i < n - 1 && numbers[i + 1] == 1) {flag = false;}if (i < n - 2 && numbers[i + 2] == 1) {flag = false;}if (flag) {count++;numbers[i] = 1;}}}cout << count << endl;return 0;
}


http://www.ppmy.cn/server/120295.html

相关文章

2024年中国研究生数学建模竞赛C题——解题思路

2024年中国研究生数学建模竞赛C题——解题思路 数据驱动下磁性元件的磁芯损耗建模——解决思路 二、问题描述 为解决磁性元件磁芯材料损耗精确计算问题&#xff0c;通过实测磁性元件在给定工况&#xff08;不同温度、频率、磁通密度&#xff09;下磁芯材料损耗的数据&#xf…

14、主机、应用及数据安全解读

数据来源&#xff1a;14.主机、应用及数据安全解读_哔哩哔哩_bilibili

MySQL中去除重复

除去相同的行 SELECT DISTINCT 列名 FROM 表名; 示例&#xff1a;查询employees表&#xff0c;显示唯一的部门ID select distinct department_id from employees;

python爬虫初体验(二)

在Python中&#xff0c;每个模块都有一个内置的变量 name&#xff0c;用于表示当前模块的名称。当一个Python文件被执行时&#xff0c;Python解释器会首先将该文件作为一个模块导入&#xff0c;并执行其中的代码。此时&#xff0c;__name__的值为模块的名称。 作用 模块可被导…

Electron应用程序打包后运行报错cannot find module ‘@vue/cli-service‘

本项目打包运行后报错问题的解决办法&#xff0c;类似于其他cannot find module XXX’的报错&#xff0c;也基本可以解决 文章目录 electron应用程序打包后运行报错排查问题解决办法 electron应用程序打包后运行报错 错误如下&#xff1a; 提示找不到该模块 排查问题 本项…

山体滑坡检测系统源码分享

山体滑坡检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

通过FUXA在ARMxy边缘计算网关上实现生产优化

在当今工业4.0时代&#xff0c;智能制造的需求日益增长&#xff0c;企业迫切需要通过数字化转型来提高生产效率、降低成本并增强市场竞争力。ARMxy系列的BL340工业级ARM控制器&#xff0c;凭借其强大的处理能力和灵活的配置选项&#xff0c;成为实现生产优化的重要基础。 一、…

盲盒扭蛋机系统开发源码部署

盲盒扭蛋机系统的开发是一个综合性的项目&#xff0c;涉及前端展示、后端逻辑处理、数据库设计以及用户体验优化等多个方面。以下是一个概括性的开发流程和一些关键点&#xff1a; 一、需求分析 市场调研&#xff1a;了解盲盒扭蛋机市场的现状、用户需求、竞争对手情况等。 功能…