NYOJ 2 括号是否配对

 现在,有一行括号序列,请你检查这行括号是否配对。

输入
    第一行输入一个数N(0 输出
    每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出N

#include  
int main()  
{  
    int t;  
    char c,s[10001],*p;  
    scanf("%d\n",&t);  
    while(t--){  
        *s=getchar();  
        p=s+1;  
        while((c=getchar())!='\n'){  
            if(*(p-1)==c-1||*(p-1)==c-2)  
                p--;  
            else  
                *p++=c;  
        }  
        if(p==s)  
            printf("Yes\n");  
        else  
            printf("No\n");  
    }  
}          

思路详解:首先输入一个字符,让指针s指向首个字符,指针p指向下一个字符地址,然后判断下一个输入的字符是否为换行,若是,则退出,输出No,若否,则判断指针p的

上个位置即s指的的位置是否与输入的字符匹配,若是,则p指向上一个字符的位置,即s的位置,否则,对p指向的位置赋值,然后p++,指向下一个字符的位置,再

输入一个字符,若与p指的上一个字符位置的字符匹配,则p--,再输入一个字符,若与p指向上一个字符匹配,则p--,即与s指针重合,若输入回车键,输出Yes.

你可能感兴趣的:(NYOJ 2 括号是否配对)