查看: 3068|回復: 0
打印 上一主題 下一主題

[UVa] 673 - Parentheses Balance

[複製鏈接]
  • TA的每日心情
    慵懶
    2014-9-17 13:56
  • 簽到天數: 1 天

    [LV.1]初來乍到

    22

    主題

    57

    帖子

    533

    積分

    高級會員

    Rank: 4

    積分
    533

    台南一中資訊社新手達陣

    跳轉到指定樓層
    樓主
    發表於 2014-5-2 12:41:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    在本題中,題目會先給你一個包含小括號()及中括號〔〕的字串。當字串符合下列條件時我們稱他為正確的運算式:
    • 該字串為一個空字串
    • 如果A和B都為正確的運算式,則AB也為正確的運算式,
    • 如果A為正確的運算式,則(A)及〔A〕都為正確的運算式。
    現在,請你寫一支程式可以讀入這類字串並檢查它們是否為正確的運算式。字串的最大長度為128個字元。
    Input
    輸入的第一列為正整數n,代表接下來有n列待測資料。
    Output
    檢查每列待測資料,如果正確輸出Yes,否則輸出No。
    Sample Input
    3

    ([])
    (([()])))
    ([()[]()])()
    Sample Output
    Yes
    No
    Yes

    在此附上題目連結
    解題感想:這題難易中,使用堆疊注意括號判斷,應該可以解出
    AC CODE:
    #include<iostream>
  • #include<cmath>
  • #include<cstdio>
  • #include<vector>
  • #include<cstring>
  • #include<stack>
  • using namespace std;

  • int main()
  • {
  •         char s[200];
  •         int n,ans=0;
  •         cin>>n;
  •         
  •         while(n--)
  •         {        
  •                 stack<char> qq;
  •                 scanf("%s",s);
  •                 for(int i=0;s[i]!='\0';i++)
  •                 {
  •                         if(s[i]=='('||s[i]=='[')
  •                         {
  •                                 qq.push(s[i]);
  •                                        
  •                         }
  •                         if(s[i]==')')
  •                         {
  •                                 if(qq.empty())
  •                                 {
  •                                         ans++;
  •                                         break;
  •                                 }
  •                                 if(qq.top()=='(')
  •                                 {
  •                                         qq.pop();
  •                                        
  •                                 }
  •                         }
  •                         if(s[i]==']')
  •                         {
  •                                 if(qq.empty())
  •                                 {
  •                                         ans++;
  •                                         break;
  •                                 }
  •                                 if(qq.top()=='[')
  •                                 {
  •                                         qq.pop();
  •                                        
  •                                 }
  •                         }
  •                 }
  •                 if(qq.empty()&&ans==0) cout<<"Yes"<<"\n";
  •                 else cout<<"No"<<"\n";
  •                 ans=0;
  •                 while(!qq.empty()) qq.pop();
  •         }
  •         return 0;
  • }











  • 評分

    參與人數 1金幣 +3 收起 理由
    domen111 + 3 這題很容易WA或RE

    查看全部評分

    回復

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表