【題目描述】
假設表達式中允許包含兩種括號:圓括號和方括號,其嵌套的順序隨意,如([ ]())
或[([ ][ ])]
等爲正確的匹配,[( ])
或([ ]( )
或 ( ( ) ) )
均爲錯誤的匹配。
現在的問題是,要求檢驗一個給定表達式中的括弧是否正確匹配?
輸入一個只包含圓括號和方括號的字符串,判斷字符串中的括號是否匹配,匹配就輸出 “OK
” ,不匹配就輸出“Wrong
”。輸入一個字符串:[([][])]
,輸出:OK
。
【輸入】
輸入僅一行字符(字符個數小於255255)。
【輸出】
匹配就輸出 “OK
” ,不匹配就輸出“Wrong
”。
【輸入樣例】
[(])
【輸出樣例】
Wrong
#include <iostream> using namespace std; const int N = 255; char a[N] = {0}; int main() { char ch = 0; int yuan = 0, zhong = 0; int top = 0, cnt = 0; while (ch != '@' && cnt < N) { ch = cin.get(); switch (ch) { case '(': a[top++] = ch; yuan++; break; case ')': yuan--; if (a[--top] != '(') { ch = '@'; } break; case '[': a[top++] = ch; zhong++; break; case ']': zhong--; if (a[--top] != '[') { ch = '@'; } break; case '@': default: ch = '@'; break; } cnt++; } if (zhong == 0 && yuan == 0) { cout << "OK"; } else { cout << "Wrong"; } return 0; }