题解
2025-08-13 14:44:19
发布于:浙江
3阅读
0回复
0点赞
思路代码里有
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,q;
cin >> n >> q;
while(q--){ //q组数据q次循环
string s;
cin >> s;
bool flag = true;
for(int i = 0;i < s.size();i++){
//判断是否不会违反第一条原则
if(s[i] == '1'){ //自身为1则判断左右是否都不为0
if(i != 0 && s[i - 1] == '1') { //有左的情况 判断左是否为1
cout << "No" << endl;
flag = false;
break;
}
if(i != s.size() && s[i + 1] == '1') { //有右的情况 判断右是否为1
cout << "No" << endl;
flag = false;
break;
}
}
//如果可以坐下其他入的话,那么得满足左(有左的话)右(有右的话)和自己都是0,那么循环判断即可
if(s[i] == '0'){ //自身为0
if(i == 0){ //无左的情况
if(s[i + 1] == '0'){ //只用判断右是否为0
cout << "No" << endl;
flag = false;
break;
}
} else if(i == s.size() - 1){ //无右的情况
if(s[i - 1] == '0'){ //只用判断左是否为0
cout << "No" << endl;
flag = false;
break;
}
} else { // 都有的情况
if(s[i - 1] == '0' && s[i + 1] == '0'){ // 判断左右是否为0
cout << "No" << endl;
flag = false;
break;
}
}
}
}
if(flag) cout << "Yes" << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个