西南科技大學OJ題 括號匹配問題0962
括號匹配問題
假設表示式中允許包含兩種括號:圓括號和方括號。編寫一個演算法判斷表示式中的括號是否正確配對。
輸入
由括號構成的字串,包含”(“、”)“、”[“和”]“。
輸出
如果匹配輸出YES,否則輸出NO。
樣例輸入
[([][]())]
樣例輸出
YES
#include<stdio.h> #include<string.h> int main() { char a[100]; char b[100]; int n; scanf("%s",a); n=strlen(a); int k=0; int t=0; for(int i=0;i<n;i++) { if(a[i]=='(') { b[k++]=a[i]; } else if(a[i]=='[') { b[k++]=a[i]; } else if(a[i]==')') { if(b[k-1]=='(') { k--; } else { t=1; break; } } else if(a[i]==']') { if(b[k-1]=='[') { k--; } else { t=1; break; } } } if(t==1) printf("NO"); else if(k==0) printf("YES"); else printf("NO"); }