Description
Statements
Zaid has two words, a of length between 4 and 1000 and b of length 4 exactly. The word a is 'good' if it has a substring which is equal tob. However, a is 'almost good' if by inserting a single letter inside of it, it would become 'good'. For example, if a = 'start' and b = 'tear':b is not found inside of a, so it is not 'good', but if we inserted the letter 'e' inside of a, it will become 'good' ('steart'), so a is 'almost good' in this case. Your task is to determine whether the word a is 'good' or 'almost good' or neither.
Input
The input consists of several test cases. The first line of the input contains a single integer T, the number of the test cases. Each of the following T lines represents a test case and contains two space separated strings a and b, each of them consists of lower case English letters. It is guaranteed that the length of a is between 4 and 1000, and the length of b is exactly 4.
Output
For each test case, you should output one line: if a is 'good' print 'good', if a is 'almost good' print 'almost good', otherwise print 'none'.
Sample Input
4
smart mark
start tear
abracadabra crab
testyourcode your
almost good
almost good
none
good
Hint
A substring of string s is another string t that occurs in s. Let's say we have a string s = "abcdefg" Possible valid substrings:"a","b","d","g","cde","abcdefg". Possible invalid substrings: "k","ac","bcef","dh".
尝试一下新的风格
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef long long LL;
char a[1005];
char b[10];
int main()
{
//freopen("input.txt","r",stdin);
int t;
cin>>t;
while(t--)
{
cin>>a;
cin>>b;
int len=strlen(a);
int flag=0;
int cas,cou;
for(int i=0;i<len-3;i++)
{
if(a[i]==b[0]){
if(a[i+1]==b[1]&&a[i+2]==b[2]&&a[i+3]==b[3]) {flag=1;break;}
}
}
if(flag){
cout<<"good"<<endl;
continue;
}
for(int i=0;i<len;i++)
{
if(a[i]==b[0]&&a[i+1]==b[1]&&a[i+2]==b[2]) {flag=1;break;}
if(a[i]==b[0]&&a[i+1]==b[1]&&a[i+2]==b[3]) {flag=1;break;}
if(a[i]==b[0]&&a[i+1]==b[2]&&a[i+2]==b[3]) {flag=1;break;}
if(a[i]==b[1]&&a[i+1]==b[2]&&a[i+2]==b[3]) {flag=1;break;}
}
if(flag) {cout<<"almost good"<<endl;}
else {cout<<"none"<<endl;}
}
}