ZOJ Special AC String 水
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3702
题目大意:
对于给定的一个字符串,满足如下要求输出AC,否则WA(好吧我简写)
给定字符串只有ZOJ三个字母组成。Z和J只能有一个并且Z在左边
J之后的O个数必须大于Z之前的O个数
Z和J之间O的个数必须不大于J之后的O的个数,并且他们都大于0
#include<cstdio> #include<cstring> const int MAXN=1001; bool ok(char a[]) { int len=strlen(a); int z,j; z=j=-1; for(int i=0;i<len;i++) { if( a[i]!='Z' && a[i] !='O' && a[i] != 'J') return false; if(a[i]=='Z' && z==-1) //把右边的z排除 z=i; else if(a[i]=='Z' && z!=-1) return false; if(a[i]=='J' && j==-1) //把右边的j排除 j=i; else if(a[i]=='J' && j!=-1) return false; } if(j < z) //j在z左边显然不行 return false; if(z+1==j) //中间没有O return false; if(j-z-1 > len-1-j) return false; if(z > len-1-j) return false; //o z o j o o //0 1 2 3 4 5 6 return true; } int main() { char a[MAXN]; while(~scanf("%s",a)) { if(ok(a)) printf("Accepted\n"); else printf("Wrong Answer\n"); } }
新 blog : www.hrwhisper.me