EarthGiao @ 2019-03-24 09:58:34
下面是我63分的
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[101];
bool use[101];//判断是否匹配成功
int main()
{
gets(a);
int l=strlen(a);
memset(use,false,sizeof(use));
for(int i=0;i<l;++i)
{
if(a[i]=='('||a[i]=='[')
{
for(int j=i+1;j<l;j++)
{
if(use[j]==false&&((a[i]=='('&&a[j]==']')||(a[i]=='['&&a[j]=='(')))break;
else
if(use[j]==false&&((a[i]=='('&&a[j]==')')||(a[i]=='['&&a[j]==']')))
{
use[i]=use[j]=true;
break;
}
}
}
}
for(int k=0;k<l;++k)
{
if(!use[k])//未匹配成功的
{
if(a[k]=='('||a[k]==')')cout<<'('<<')';
else
if(a[k]=='['||a[k]==']')cout<<'['<<']';
}
else
cout<<a[k];//匹配成功的直接输出
}
return 0;
}
下面是我100分的
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char a[101];
bool use[101];//判断是否匹配成功
int main()
{
gets(a);
int l=strlen(a);
memset(use,false,sizeof(use));
for(int i=0;i<l;++i)
{
if(a[i]==')'||a[i]==']')
{
for(int j=i-1;j>=0;j--)
{
if(use[j]==false&&((a[i]==')'&&a[j]=='[')||(a[i]==']'&&a[j]=='(')))break;
else
if(use[j]==false&&((a[i]==')'&&a[j]=='(')||(a[i]==']'&&a[j]=='[')))
{
use[i]=use[j]=true;
break;
}
}
}
}
for(int k=0;k<l;++k)
{
if(!use[k])//未匹配成功的
{
if(a[k]=='('||a[k]==')')cout<<'('<<')';
else
if(a[k]=='['||a[k]==']')cout<<'['<<']';
}
else
cout<<a[k];//匹配成功的直接输出
}
return 0;
}
不就是查找顺序不同吗为什么会有这么大的差距,求大佬告知!
by Soroak @ 2019-03-24 11:28:58
@EarthGiao
by 拈花卜笑 @ 2019-07-28 09:53:33
考古
by D447H @ 2020-02-29 12:46:28
考古
by dddk @ 2020-04-15 10:52:54
考古