問題文: The Balance of the World | Aizu Online Judge
stackにつんでいって確認していって、途中で矛盾が生じたり、最終的スタックが空になってなきゃno。
#include <iostream> #include <stack> #include <vector> using namespace std; int main(){ string str; while(getline(cin,str) && str != "."){ string c; for(int i = 0 ; i < str.size() ; i++) if(str[i] == ')' || str[i] == '(' || str[i] == '[' || str[i] == ']') c += str[i]; stack<char> s; bool f = true; for(int i = 0 ; i < c.length() ; i++){ if(s.empty() || c[i] == '(' || c[i] == '[') s.push(c[i]); else if( (s.top() == '(' && c[i] == ')') || (s.top() == '[' && c[i] == ']') ){ s.pop(); }else{ f = false; break; } } cout << (f && s.empty() ?"yes":"no") << endl; } }