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

括號匹配問題,括號匹配

編輯:關於C語言

括號匹配問題,括號匹配


/*括號配對問題:第一行輸入一個數N(0<N<=100),表示有N組測試數據。*/
/*後面的N行輸入多組輸入數據,每組輸入數據都是一個字符串S(S的長度小於10000,且S不是空串),*/
/*測試數據組數少於5組。數據保證S中只含有"[","]","(",")"四種字符。匹配輸出yes,否則輸出no*/
/*author:dzw*/
/*date:2015-9-14*/
/*解析:用a表示左括號個數,匹配一個a減1.故最後a=0時則匹配成功。*/
/*特例:如果匹配成功字段後下面的首個字符是右括號,用標識b來表示,此時無論後面又多少括號都不匹配成功*/

#include<stdio.h>
#include<string.h>
int main()
{
    int n,i,j;    
    scanf("%d",&n);
    int c[n];
    char num[n][10000];
    for(i=0;i<n;i++)
    {
        int a=0,b=1;
        scanf("%s",num[i]);
        for(j=0;j<strlen(num[i]);j++)
        {
            switch(num[i][j])
            {
                case ')':if(a==0) b=0;if(num[i][a-1]=='(') a-=1;break;
                case ']':if(a==0) b=0;if(num[i][a-1]=='[') a-=1;break;
                case '(':num[i][a]=num[i][j];a+=1;break;
                case '[':num[i][a]=num[i][j];a+=1;break;
            }
        }

        if(a!=0|b==0) c[i]=0;
        else c[i]=1;
        
    }
    for(i=0;i<n;i++)
    {
        if(c[i]==0) printf("no\n");
        else printf("yes\n");
    }
    return 0;
    
}

 自己測試通過,但是不能Accepted。不知道為什麼

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