63分求助!

P1241 括号序列

HGJH°L @ 2020-09-06 19:27:18

#include<bits/stdc++.h>

using namespace std;

bool f[102];//标记是否配对
string s;
int i,j;

int main(int argc,char** argv)
{

    cin >>s;
    for (i=0;i<s.size();i++)
    {
        if (s[i]==')')//试图配对
            for (j=i-1;j>=0;j--)
                if (s[j]=='('&&!f[j])//如果找到了还没被标记的同种左括号
                {
                    f[i]=true;
                    f[j]=true;
                    break;
                }
        if (s[i]==']')
            for (j=i-1;j>=0;j--)
                if (s[j]=='['&&!f[j])//如果找到了还没被标记的同种左括号
                {
                    f[i]=true;
                    f[j]=true;
                    break;
                }
    }
    for (i=0;i<s.size();i++)
        switch (s[i])//分类讨论
        {
            case '(':
            {
                cout <<s[i];
                if (!f[i])
                    cout <<")";
                break;
            }
            case '[':
            {
                cout <<s[i];
                if (!f[i])
                    cout <<"]";
                break;
            }
            case ')':
            {
                if (!f[i])
                    cout <<"(";
                cout <<s[i];
                break;
            }
            case ']':
            {
                if (!f[i])
                    cout <<"[";
                cout <<s[i];
                break;
            }
            default :
            {
                cout <<s[i];
                break;
            }
        }
    cout <<endl;
    return 0;
}

RT,希望能有好心的大佬帮我康康

这是原网址


by WanderingTrader @ 2020-09-06 19:35:46

@CR_HGJH 给你一个hack

input

([)]

output

()[()]

by WanderingTrader @ 2020-09-06 19:46:09

@CR_HGJH 我用ide测出来是WA


by HGJH°L @ 2020-09-06 19:47:43

@zycany 谢谢大佬,过了(说白了还是题面害人)


by mrozhx @ 2020-10-31 05:54:29

@zycany 不可以是“()[()]”吗


by WanderingTrader @ 2020-10-31 11:34:23

@醉水 ?


by mrozhx @ 2020-11-01 16:05:12

@zycany 打错了,应该是(【】)【】


by 方俊懿 @ 2021-03-24 21:33:00

@wandering_trader 你的hack也解决了我的问题


|