建设银行的官方网站积分商场,要加强县门户网站的建设管理,html5笑话网站源码,网站空间服务多少钱OD统一考试#xff08;C卷#xff09; 分值#xff1a; 100分 题目描述
在一个大型体育场内举办了一场大型活动#xff0c;由于疫情防控的需要#xff0c;要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图#xff0c;座位中存在已落座的观众C卷 分值 100分 题目描述
在一个大型体育场内举办了一场大型活动由于疫情防控的需要要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图座位中存在已落座的观众请计算出在不移动现有观众座位的情况下最多还能坐下多少名观众。
输入描述
一个数组用来标识某一排座位中每个座位是否已经坐人。0表示该座位没有坐人1表示该座位已经坐人。
输出描述
整数在不移动现有观众座位的情况下最多还能坐下多少名观众。
示例1
输入
10001输出
1示例2
输入
0101输出
0备注 1 数组长度 10000 题解 通过贪心模拟的方法遍历座位数组统计连续的空座位并计算最多还能坐下多少名观众。在每次迭代中检查当前座位及其相邻座位的状态如果当前座位为空且两侧也为空则可坐下一名观众。最后输出结果。 C
#include iostream
#include vectorusing 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[i1] 0)) {result;pre 1;continue;}pre seat[i];}cout result endl;return 0;
}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
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 1pre 1continuepre seat[i]print(result)整理题解不易 如果有帮助到您请给点个赞 ❤️ 和收藏 ⭐让更多的人看到。