括号配对问题 UESTC - 649
Problem
大家都知道算术表达式中,括号必须配对,现在任意给出一个算术表达式,判断其括号是否配对。如果配对,输出Yes,否则输出No。
Input
含多组测试数据,输入首先是一个整数TT表示测试数据组数(0
Output
对应每组测试数据,输出一行结果。
Sample Input
2
32*(78-23)+78
32*78)-(23+78)
Sample Output
Yes
No
ps:
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string.h>
using namespace std;
int i,j;
int k[1010];
int l[1010];
char str[1010][1010];
int main() {
int t;
scanf("%d", &t);
for(int i = 0; i < t; i++) scanf("%s",&str[i]);
for(int i = 0; i < t; i++) {
k[i] = 0;
l[i] = 0;
int len = strlen(str[i]);
for(int j = 0; j < len; j++) {
if(k[i] == 0 && str[i][j] == ')') l[i] = 1; //第一个是否是 右括号
if(str[i][j] == '(') k[i]++;
if(str[i][j] == ')') k[i]--;
}
}
for(int i = 0; i < t; i++) {
if(k[i] == 0 && l[i] == 0) printf("Yes\n");
else printf("No\n");
}
return 0;
}