AOJ_0139 Snakes
PKUが死んでた
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0139
解法
地道にチェックするコードを書く
もっとスマートにできないかなぁ。
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; char s[250]; bool cA(){ int l = 0, i; for(i = 2; ; i++){ if(s[i] == '=') l++; else if(s[i] == '#') break; else return false; } if(l == 0) return false; for(i = i + 1; ; i++){ if(s[i] == '=') l--; else if(s[i] == '~'){ if(s[i + 1] == 0 && l == 0) return true; else return false; }else return false; } return false; } bool cB(){ int i; bool f = false; for(int i = 2; ; i+=2){ if(!(s[i] == 'Q' && s[i + 1] == '=')){ if(s[i] == '~' && s[i + 1] == '~' && s[i + 2] == 0) return f; else return false; } f = true; } } int main(){ int n; char ch; scanf("%d", &n); for(int c = 0; c < n; c++){ scanf("%s", s); scanf("%c", &ch); if(s[0] == '>' && s[1] == '\''){ if(cA()){ printf("A\n"); continue; } } if(s[0] == '>' && s[1] == '^'){ if(cB()){ printf("B\n"); continue; } } printf("NA\n"); } return 0; }