给你一个字符串,只含有‘(’和‘)’,然后你判断一下是否合法
Input
有多组数据,每组数据一行字符串s(|s|<=100),如题目所述
Output
如果合法则输出YES,否则输出NO。
Sample Input
(()()) )(
Sample Output
YES NO
今天玩玩了西电的比赛,简单题,不过挖了好几次才过的
#include <cstdlib> #include <iostream> #include <cstdio> #include <cstring> using namespace std; char stack[110],exp[110]; int main(int argc, char *argv[]) { while(gets(exp)) { int len=strlen(exp); int top=-1,flag=1; if(exp[0]==')'||(len&1)) { puts("NO");continue;} stack[++top]=exp[0]; for(int i=1;i<len;i++) if(exp[i]=='(') stack[++top]='('; else if(exp[i]==')') { if(top>-1&&stack[top]=='(') top--; else { flag=0; break; } } puts(flag&&top==-1?"YES":"NO"); //开始没有加判断flag==-1 } system("PAUSE"); return EXIT_SUCCESS; }