Description
大家都知道算术表达式中,括号必须配对,现在任意给出一个算术表达式,判断其括号是否配对。如果配对,输出“Yes”,否则输出“No”。
Input
含多组测试数据,输入首先是一个整数T表示测试数据组数(0<T <= 300)。随后有T行测试数据,长度不超过1000个字符,字符串间不含空格。
Output
对应每组测试数据,输出一行结果。
Sample Input
2
32*(78-23)+78
32*78)-(23+78)
Sample Output
Yes
No
我的解答:
1 #include <stdio.h> 2 #include <string.h> 3 int t,flag[1001],dead[1001],i,j; 4 char c,str[1001][1001]; 5 int main() 6 { 7 scanf("%d",&t); 8 for (i=0;i<t;i++) 9 { 10 scanf("%s",&str[i]); 11 } 12 for (i=0;i<t;i++) 13 { 14 flag[i]=0; 15 dead[i]=0; 16 int j=0; 17 for (j=0;j<strlen(str[i]);j++) 18 { 19 if ((flag[i]==0)&&(str[i][j]==')')) dead[i]=1; 20 if (str[i][j]=='(') flag[i]++; 21 if (str[i][j]==')') flag[i]--; 22 } 23 } 24 for (i=0;i<t;i++) 25 { 26 if ((flag[i]==0)&&(dead[i]==0)) printf("Yes\n"); 27 else printf("No\n"); 28 } 29 return 0; 30 }