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也解决了我的问题