题意:
一个01串是否合法满足以下两个要求:
1.没有两个相邻的1;
2.在满足第一个条件的情况下,不能再放下更多的1。
判断一个给定的串是否合法。
思路:
最近cf的A怎么都这么坑啊。。。
首先是判断长度为1的情况,为0是No,1就是Yes;
然后判断长度大于1的,有2种一般情况,11,000
2种特殊情况,开头两个0,结尾两个0。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int n;
char s[];
scanf("%d%s",&n,s);
bool f = ;
if (n == && s[] == '')
{
f = ;
}
for (int i = ;i < n-;i++) if(s[i] == '' && s[i+] == '') f = ;
for (int i = ;i <= n-;i++)
{
if (i == )
{
if (s[i] == '' && s[i+] == '') f = ;
}
else if (i == n - )
{
if (s[i] == '' && s[i+] == '') f = ;
}
else
{
if (s[i] == '' && s[i+] == '' && s[i+] == '') f = ;
}
}
if (f) puts("No");
else puts("Yes");
return ;
}