#include <iostream>
#include <vector>
#include <map>
using namespace std;
#define MAX 256
int main()
{
int a[MAX]; /* 括号优先级定义 */
a['{'] = 4;
a['['] = 3;
a['('] = 2;
a['<'] = 1;
a['}'] = 4;
a[']'] = 3;
a[')'] = 2;
a['>'] = 1;
vector<char> bracket; /* 存储括号栈 */
cout << "please input string" << endl;
char ch = getchar();
int i=0;
while(ch!='\n')
{
if('{' == ch || '[' == ch || '(' == ch || '<' == ch) /* 遇见左括号处理 */
{
i++;
if(0 == bracket.size())
bracket.push_back(ch);
else
{
if(a[ch] > a[bracket.back()])
{
cout << "false" << endl;
return 0;
}
else
bracket.push_back(ch);
}
}
else if('}' == ch || ']' == ch || ')' == ch || '>' == ch) /* 遇见右括号处理 */
{
if(0 == bracket.size())
{
cout << "false" << endl;
return 0;
}
if(a[bracket.back()] == a[ch])
bracket.pop_back();
else
{
cout << "false" << endl;
return 0;
}
}
ch = getchar();
}
if(0 == bracket.size() && i!=0) /* 经过栈删除后若栈空*/
cout << "true" << endl;
if(0 != bracket.size()) /* 经过栈删除后若栈非空 */
cout << "false" << endl;
if(0 == i) /* 若输入中没有括号 */
cout << "false" << endl;
return 0;
}