【括号匹配】
1.当遇到左括号时,将其入栈
2.当遇到右括号时,若栈非空,则与当前top匹配,再top出栈, 若栈空,则缺左括号
3.当串扫描完,若栈非空,则说明缺右括号,若栈空,则匹配成功
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #define MAX 100 char stack[MAX]; int main(int argc, char *argv[]) { int N, top, flag; char ch; scanf("%d%*c", &N); while (N--) { top = 0, flag = 1; ch = getchar(); while (ch != '\n') { if (ch == '(' || ch == '[') stack[top++] = ch; else if (ch == ')' && stack[top - 1] == '(' || ch == ']' && stack[top - 1] == '[') { if (top) top--; else flag = 0; } else flag = 0; ch = getchar(); } printf("%s\n", !top && flag ? "Yes" : "No"); } return 0; }