题目
原题链接:Row
题意
给出一串由0和1组成的数字,1表示这排座位中该位置有人,0相反。问该排是否满足任意两人件间有空位,且不能插入任何一个满足上一条件的座位。
写的有些乱。开头和结束的判断条件不同于中间,两头若是有≥2的空位则还能插入,中间>2则能插入。
代码
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
string s;
cin>>n>>s;
int cnt=0;
for(int i=0;i<n;i++){
cnt+=s[i]=='0';
}
if(cnt==n){
printf("No\n");
return 0;
}
int tmp=0,flag=0;
for(int i=0;i<n;i++){
if(s[i]=='1'){
if(flag){
if(tmp>2 || tmp==0){
printf("No\n");
return 0;
}
}else{
flag=1;
if(tmp>=2){
printf("No\n");
return 0;
}
}
tmp=0;
}else tmp++;
}
if(tmp>=2) printf("No\n");
else printf("Yes\n");
return 0;
}
网友评论