982A Row
题意看半天还WA了两发,直接写后面去了…
读一下题目要求
1.There are no neighbors adjacent to anyone seated. 领座没有人 就是指不能出现两个1连续排列的情况
2.It’s impossible to seat one more person without violating the first rule. 在不违反1的条件下不可能再安排一个座位
例如: 1001满足条件1,不可能再把一个0变成1还符合条件1 10001满足条件1,但是把第2个0换成1依旧可以符合条件1,这样子就不符合条件2
还有特殊情况 0010是可以变成1010的,1010符合两条规则 同理0100是可以变成0101的 所以,特殊情况, 第一第二是0第三个是1 和 最后两个是0倒数第三个是1是No
#include<bits/stdc++.h>
int main()
{
int i,j,k,t;
char num[2000];
while(~scanf("%d",&t))
{
getchar();
int cut=0;
gets(num);
if(t==1){
if(num[0]=='0')
cut=1;
}
else{
for(i=1;i<t;i++){
if(num[i]==num[i-1]&&num[i]=='1'){
cut=1;
}
}
for(i=2;i<t;i++){
if(num[i]==num[i-1]&&num[i]==num[i-2]&&num[i]=='0'){
cut=1;
}
}
if(num[0]=='0'&&num[1]==num[0]||num[t-1]=='0'&&num[t-1]==num[t-2])
cut=1;
}
if(cut==1){
printf("No\n");
}
else{
printf("Yes\n");
}
}
}