| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
#沙發#记忆搜索,水題,咋没人做?#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
int slump[65][65], slimp[65][65];
int l;
char s[65];
void init(){
scanf("%s", s);
l = strlen(s);
for(int i = 0; i <= l; i++){
for(int j = i; j <= l; j++){
slump[i][j] = -1;
slimp[i][j] = -1;
}
}
}
bool isSlump(int kt, int jw){
if(slump[kt][jw] != -1) return slump[kt][jw];
int res;
if(jw-kt<2 || (s[kt] != 'D' && s[kt] != 'E')) res = 0;
else{
int k = kt+1;
while(k <= jw){
if(s[k] != 'F') break;
k++;
}
if(k == jw+1 || k == kt+1) res = 0;
else if(k == jw){
res = (s[k]=='G');
}
else{
res = isSlump(k, jw);
}
}
slump[kt][jw] = res;
return res;
}
bool isSlimp(int kt, int jw){
if(slimp[kt][jw] != -1) return slimp[kt][jw];
int res;
if(jw<=kt || s[kt]!='A') res = 0;
else if(jw==kt+1){
res = (s[jw]=='H');
}
else if(s[jw]!='C'){
res = 0;
}
else{
res = (s[kt+1]=='B' && kt+2<=jw-1 && isSlimp(kt+2,jw-1)) || (isSlump(kt+1,jw-1));
}
slimp[kt][jw] = res;
return res;
}
int main(){
int n;
cout << "SLURPYS OUTPUT" << endl;
scanf("%d",&n);
while(n--){
init();
bool isSlurpy = 0;
for(int i = 1; i < l-1; i++){
if(isSlimp(0, i) && isSlump(i+1, l-1)){
isSlurpy = 1;
break;
}
}
cout << (isSlurpy? "YES": "NO") << endl;
}
cout << "END OF OUTPUT" << endl;
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator