_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
知道了~