HDU-1854 Q-Sequence
Time Limit: 1000 ms / Memory Limit: 65535 kb
Description
A Q-sequence is defined as:
Q-Seq := 0 or
Q-Seq := Q-seq Q-seq 1
That is to say a Q-Sequence is a single ‘0’ or two Q-Sequences followed by an ‘1’.
Given a sequence of ‘0’s and ‘1’s, you are to determine whether it is a Q-Sequence.
Input
The first line is a number n refers to the number of test cases. Then n lines follows, each line has a string made up of ‘1’s and ‘0’s. The maximum length of the sequence is 1000.
Output
The output contain n lines, print “Yes” if it is a Q-sequence, otherwise print “No”.
Sample Input
3
0010011
0101
00011
Sample Output
Yes
No
Yes
Source
HDU 2007 Programming Contest - Final
原先没读懂题,Q为0,我理解成多个0了,看1就可以了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
for(int i = 0;i < n;++i)
{
string s;
cin >> s;
bool flag = false;
int num = 0;
int len = s.size();
for(int i = 0;i < len;++i)
{
if(s[i] == '0')
num++;
if(s[i] == '1'){
if(num >= 2){
num -= 1;
}
else{
flag = true;
break;
}
}
}
if(!flag){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return 0;
}