AOJ 0139 - Snakes
普通に解いた.
#include <iostream> //任意文字を消し全て消えてるか調べる関数 int clear(std::string s, std::string f){ int pos; while(pos = s.find(f), pos != std::string::npos) s.replace(pos,f.size(),""); if(s == "")return 1; return 0; } int main(){ int n; std::cin >> n; while(n--){ std::string sn, st, res = ""; std::cin >> sn; //Type A //頭が>',尻尾が~,かつお腹が奇数である if(sn.substr(0,2) == ">'" && sn[sn.size()-1] == '~' && (sn.size()-3) % 2 == 1){ st = sn.substr(2,sn.size()-3); //お腹の真ん中が# if(st[st.size()/2] == '#'){ st.replace(st.size()/2,1,""); //#以外がすべて= if(st != "") if(clear(st,"="))res = "A\n"; } } //Type B //頭が>~,尻尾が~~,かつお腹が偶数である if(sn.substr(0,2) == ">^" && sn.substr(sn.size()-2,2) == "~~" && (sn.size()-4) % 2 == 0){ st = sn.substr(2,sn.size()-4); if(st != "") if(clear(st,"Q="))res = "B\n"; } if(res == "")res = "NA\n"; std::cout << res; } }