NY : 括号匹配问题
生活随笔
收集整理的這篇文章主要介紹了
NY : 括号匹配问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
括號配對問題
時間限制:3000?ms ?|? 內存限制:65535?KB 難度:3 描述naonao
STL :
棧(statck)這種數據結構在計算機中是相當出名的。棧中的數據是先進后出的(First In Last Out, FILO)。棧只有一個出口,允許新增元素(只能在棧頂上增加)、移出元素(只能移出棧頂元素)、取得棧頂元素等操作。在STL中,棧是以別的容器作為底部結構,再將接口改變,使之符合棧的特性就可以了。因此實現非常的方便。下面就給出棧的函數列表和VS2008中棧的源代碼,在STL中棧一共就5個常用操作函數(top()、push()、pop()、 size()、empty()?),很好記的。
思想:利用STL中的棧(STACK),將左括號放入棧中,遇到右括號,①判斷棧是否為空,空則直接判斷整個字符串括號不匹配。不為空進行②。
②判斷該右括號是否與棧頂元素匹配,匹配則將棧頂元素退棧,不匹配則直接判斷整個字符串括號不匹配。
代碼:
#include <iostream> #include <stack> #include <cstdio> #include <cstring> using namespace std;int main() {int n;char str[10010];cin>>n;while(n--){cin>>str;int len=strlen(str);int i;stack <char> c;for(i=0;i<len;++i){if(str[i]=='(' || str[i]=='['){c.push(str[i]);}if(str[i]==')'){char ch;if(c.empty())break;else{ch=c.top();c.pop();}if(ch!='('){break;}}if(str[i]==']'){char ch;if(c.empty())break;else{ch=c.top();c.pop();}if(ch!='['){break;}}}if(i>=len){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}}return 0; }總結
以上是生活随笔為你收集整理的NY : 括号匹配问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ACM网站
- 下一篇: sql server 2005单独添加m