UVA 673 - Parentheses Balance 題目: 在本題中,題目會先給你一個包含小括號()及中括號〔〕的字串。當字串符合下列條件時我們稱他為正確的運算式: 該字串為一個空字串 如果A和B都為正確的運算式,則AB也為正確的運算式, 如果A為正確的運算式,則(A)及〔A〕都為正確的運算式。 現在,請你寫一支程式可以讀入這類字串並檢查它們是否為正確的運算式。字串的最大長度為128個字元。 Input 輸入的第一列為正整數n,代表接下來有n列待測資料。 Output 檢查每列待測資料,如果正確輸出Yes,否則輸出No。 Sample Input #1 3 ([]) (([()]))) ([()[]()])() Sample Output #1 Yes No Yes C++ code: ```c++= #include <bits/stdc++.h> using namespace std; int check(string s) { int str[128]; int c = -1; for (int i = 0; s[i] != '\0'; ++i) { if (s[i] == '(' || s[i] == '[' || s[i] == '{') { str[++c] = s[i]; } else if (s[i] == ')' || s[i] == ']' || s[i] == '}') { if (c == -1) { return 0; } if ((s[i] == ')' && str[c] == '(') || (s[i] == ']' && str[c] == '[') || (s[i] == '}' && str[c] == '{')) { c--; } else { return 0; } } } return c == -1; } int main () { int t; cin >> t; cin.ignore(); string n; for (int i = 0; i < t; ++i) { getline(cin, n); if (check(n)) { cout << "Yes" << endl; } else { cout << "No" << endl; } } return 0; } ```