玄学!玄学!绝对玄学!

P1241 括号序列

_XzX_ @ 2022-05-01 16:22:09

原始代码:

#include<bits/stdc++.h>
using namespace std;
const int N=105;
char s[N];
bool vis[N];
int main()
{
    gets(s);
    int len=strlen(s);
    for(int i=0;i<len;i++)
    {
        if(s[i]==')')
        {
            for(int j=i-1;j>=0;j--)
            {
                if(s[j]=='('&&vis[j]==false)
                {
                    vis[i]=vis[j]=true;
                    break;
                }
                else if(s[j]=='['&&vis[j]==false)
                    break;
            }
        }
        else if(s[i]==']')
        {
            for(int j=i-1;j>=0;j--)
            {
                if(s[j]=='['&&vis[j]==false)
                {
                    vis[i]=vis[j]=true;
                    break;
                }
                else if(s[j]=='('&&vis[j]==false)
                    break;
            }
        }
    }
    for(int i=0;i<len;i++)
    {
        if(vis[i]==false)
        {
            if(s[i]=='('||s[i]==')')
                cout<<"()";
            else
                cout<<"[]";
        }
        else
            cout<<s[i];
    }
    puts("");
    return 0;
}

记录: https://www.luogu.com.cn/record/74924507

说什么输出太长了,但自己本地测了好多数据都没问题

结果,把char数组改成string,就A了,

#include<bits/stdc++.h>
using namespace std;
const int N=105;
string s;
bool vis[N];
int main()
{
    cin>>s;
    int len=s.size();
    for(int i=0;i<len;i++)
    {
        if(s[i]==')')
        {
            for(int j=i-1;j>=0;j--)
            {
                if(s[j]=='('&&vis[j]==false)
                {
                    vis[i]=vis[j]=true;
                    break;
                }
                else if(s[j]=='['&&vis[j]==false)
                    break;
            }
        }
        else if(s[i]==']')
        {
            for(int j=i-1;j>=0;j--)
            {
                if(s[j]=='['&&vis[j]==false)
                {
                    vis[i]=vis[j]=true;
                    break;
                }
                else if(s[j]=='('&&vis[j]==false)
                    break;
            }
        }
    }
    for(int i=0;i<len;i++)
    {
        if(vis[i]==false)
        {
            if(s[i]=='('||s[i]==')')
                cout<<"()";
            else
                cout<<"[]";
        }
        else
            cout<<s[i];
    }
    return 0;
}

记录: https://www.luogu.com.cn/record/74924955

有没有DALAO能解答一下~


by happybob @ 2022-05-01 16:24:43

@hncsxzx 可能是gets的问题


by _XzX_ @ 2022-05-01 16:42:43

@happybob,是的是的,谢谢


by SIXIANG32 @ 2022-05-01 16:44:17

@hncsxzx 你谷的 gets 非常玄学,所以尽量不要用 gets qwq


by _XzX_ @ 2022-05-01 16:47:49

知道了~


|