1798927139 发表于 2014-11-29 12:55:12

求助。。。

<p>#include <stdio.h>
int main()
{
        int n,i,j,k,num,n1,n2;
        char s,a,b,c;
        scanf("%d",&n);
        fflush(stdin);
        if(n<=0||n>100)
        {
                n=0;
        }
        n1=n;
        while(n--)
        {
                n2=1;
                gets(s);
                if(s=='\0')
                {
                        n2=0;
                        c='0';
                }
                if(n2==1)
                {
                for(i=0,j=0;s!='\0';i++,j++)
                {
                        if(s=='[')
                        {
                                a='[';
                        }
                        else if(s==']')
                        {
                                a=']';
                        }
                        else if(s=='(')
                        {
                                a='(';
                        }
                        else if(s==')')
                        {
                                a=')';
                        }
                        else
                        {
                                j -=1;
                        }
                }
                a='\0';
                num=j;
                while(a!='\0'&&num--)
                {
                        for(i=0;a!='\0';i++)
                        {
                                if(a=='['&&a==']'||a=='('&&a==')')
                                {
                                        a='0';
                                        a='0';
                                }
                        }
                        for(i=0,k=0;a!='\0';i++,k++)
                        {
                                if(a=='[')
                                {
                                        b='[';
                                }
                                else if(a==']')
                                {
                                        b=']';
                                }
                                else if(a=='(')
                                {
                                        b='(';
                                }
                                else if(a==')')
                                {
                                        b=')';
                                }
                                else
                                {
                                        k-=1;
                                }
                        }
                        b='\0';
                        for(i=0;i<=k;i++)
                        {
                                a=b;
                        }
                }
                if(a=='\0')
                {
                        c='1';
                }
                else
                {
                        c='0';
                }
                }
        }
        for(i=n1-1;i>=0;i--)
        {
                if(c=='1')
                {
                        printf("Yes\n");
                }
                else if(c=='0')
                {
                        printf("No\n");
                }
        }
        return 0;
}</p><p>今天看了下acm一道括号配对的问题,就是让[ ] 和()配对。就写了一个,但是每次上传就说是结果错误。但感觉写没有错误呀,求大神指点.... </p>

1798927139 发表于 2014-11-29 13:51:21

怎么没人回答我呀:sad

风之残月 发表于 2014-11-29 21:43:07

运行了下,没有错误,不过你这算法用的空间太多了,而且没有提示信息,既然是ACM建议改下

1798927139 发表于 2014-11-30 11:28:06

风之残月 发表于 2014-11-29 21:43
运行了下,没有错误,不过你这算法用的空间太多了,而且没有提示信息,既然是ACM建议改下

不是呀。acm上传时不能有提示信息。他们所要求的的内存什么的也都合适呀,并没有超过的。就是不知道为什么不行,就提示结果错误,

风之残月 发表于 2014-11-30 20:11:41

1798927139 发表于 2014-11-30 11:28
不是呀。acm上传时不能有提示信息。他们所要求的的内存什么的也都合适呀,并没有超过的。就是不知道为什 ...

不清楚
页: [1]
查看完整版本: 求助。。。