2024华为OD机试真题-找座位-(Python)-C卷D卷-100分
2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)
题目描述
在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,
要求每位观众的必须间隔至少一个空位才允许落座。
现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,
在不移动现有观众座位的情况下,最多还能坐下多少名观众。
输入描述
一个数组,用来标识某一排座位中,每个座位是否已经坐人。
- 0表示该座位没有坐人,1表示该座位已经坐人。
- 1 ≤ 数组长度 ≤ 10000
输出描述
整数,在不移动现有观众座位的情况下,最多还能坐下多少名观众。
用例1
输入
10001
输出
1
说明
无
用例2
输入
0101
输出
0
用例3
输入
0010100
输出
2
考点
逻辑思维
解题思路
1.将字符串按1进行分割,存下来每个间隔内0的个数。
2.计算每个间隔内的0能坐几人,如果不是首尾部的零,则能坐(m-1)/2人,m是0的个数。
3.如果是首尾部的零,且第一或最后一个字符为0,则用公式m/2。
代码
python
str=input()
vec=str.split('1')
res=0 #空位能坐人的个数
for i in range(len(vec)):
if i==0:
if str[0]=='0':
res+=int(len(vec[i])/2)
else:
res+=int((len(vec[i])-1)/2)
elif i==len(vec)-1:
if str[-1]=='0':
res+=int(len(vec[i])/2)
else:
res+=int((len(vec[i])-1)/2)
else:
res+=int((len(vec[i])-1)/2)
print(res)
目录
原文地址:https://blog.csdn.net/goldarmour/article/details/140535292
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!