满足条件的01串
满足条件的01串
给定一个 01 串,如果同时满足下列两个条件,则输出Yes
,否则输出No
:
- 不存在两个相邻的 1
- 每个 0 两边至少有一个 1
输入格式
第一行包含整数 T,表示共有 T组测试数据。
每组数据第一行包含整数 n。
第二行包含一个长度为 n 的 01 字符串。
输出格式
每组数据输出一行结果,如果同时满足两个条件,输出 Yes
,否则输出 No
。
数据范围
前三个测试点满足,1≤n≤100。
所有测试点满足,1≤T≤10,1≤n≤1000。
同一测试点内,所有 n 相加之和不超过 1000。
输入样例:
3
3
101
4
1011
5
10001
输出样例:
Yes
No
No
折磨题:
做了好长时间明明很简单。。。做题不要急,思路要清晰。。。。
#include <iostream> #include <cstring> #include <algorithm> using namespace std; int T, l, flag; string s; int main(){ cin >> T; while(T--){ cin >> l; cin >> s; flag = 0; for(int i = 0; i < l; i++){ if(s[i] == '1' && s[i + 1] == '1'){ printf("No\n"); flag = 1; break; } if(s[i] == '0'){ if(s[i + 1] != '1' && s[i - 1] != '1'){//这样写,可以解决字符串 "0" 的情况 printf("No\n"); flag = 1; break; } } } if(flag == 1)continue; printf("Yes\n"); } return 0; }