程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 括號配對問題 棧實現

括號配對問題 棧實現

編輯:關於C語言

[html]  <SPAN style="FONT-SIZE: 14px">括號配對問題       時間限制:3000 ms  |  內存限制:65535 KB       難度:3      描述 現在,有一行括號序列,請你檢查這行括號是否配對。   輸入第一行輸入一個數N(0<N<=100),表示有N組測試數據。後面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小於10000,且S不是空串),測試數據組數少於5組。數據保證S中只含有"[","]","(",")"四種字符輸出每組輸入數據的輸出占一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No樣例輸入3   [(])   (])   ([[]()])樣例輸出No   No   Yes</SPAN>     括號配對問題    時間限制:3000 ms  |  內存限制:65535 KB    難度:3   描述 現在,有一行括號序列,請你檢查這行括號是否配對。 輸入第一行輸入一個數N(0<N<=100),表示有N組測試數據。後面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小於10000,且S不是空串),測試數據組數少於5組。數據保證S中只含有"[","]","(",")"四種字符輸出每組輸入數據的輸出占一行,如果該字符串中所含的括號是配對的,則輸出Yes,如果不配對則輸出No樣例輸入3 [(]) (]) ([[]()])樣例輸出No No Yes           [cpp]  <SPAN style="FONT-SIZE: 14px">#include<cstdio>   #include<stack>    #include<cstring>    using namespace std;   int main()   {       int test;       //freopen("D://ACMInput/input.txt","r",stdin);        scanf("%d",&test);       while(test--)       {               stack<char> number;               char c[10050];               scanf("%s",c);               int flag=0;               if(strlen(c)%2==1)               {                   printf("No\n");                   continue;               }               while(!number.empty())               {                   number.pop();               }               for(int i=0; i<strlen(c); i++)               {                   if(c[i]=='['||c[i]=='(')                   {                       number.push(c[i]);                   }                   else if(c[i]==']')                   {                       if(!number.empty())                       {                           char c=number.top();                           number.pop();                           if(c=='[')                           {                               continue;                           }                           else flag=1;                       }                       else flag=1;                   }                   else if(c[i]==')')                   {                       if(!number.empty())                       {                           char c=number.top();                           number.pop();                           if(c=='(')                           {                               continue;                           }                           else flag=1;                       }                       else flag=1;                   }                   if(flag==1)  break;               }               if(flag==1)  printf("No\n");               else printf("Yes\n");       }       return 0;   }   </SPAN>     #include<cstdio> #include<stack> #include<cstring> using namespace std; int main() {     int test;     //freopen("D://ACMInput/input.txt","r",stdin);     scanf("%d",&test);     while(test--)     {             stack<char> number;             char c[10050];             scanf("%s",c);             int flag=0;             if(strlen(c)%2==1)             {                 printf("No\n");                 continue;             }             while(!number.empty())             {                 number.pop();             }             for(int i=0; i<strlen(c); i++)             {                 if(c[i]=='['||c[i]=='(')                 {                     number.push(c[i]);                 }                 else if(c[i]==']')                 {                     if(!number.empty())                     {                         char c=number.top();                         number.pop();                         if(c=='[')                         {                             continue;                         }                         else flag=1;                     }                     else flag=1;                 }                 else if(c[i]==')')                 {                     if(!number.empty())                     {                         char c=number.top();                         number.pop();                         if(c=='(')                         {                             continue;                         }                         else flag=1;                     }                     else flag=1;                 }                 if(flag==1)  break;             }             if(flag==1)  printf("No\n");             else printf("Yes\n");     }     return 0; }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved