站外题在这
用一个递归的思想,虽然会超时,但可以拿五十分,
于是十分玄学的地方出现了,看代码内注释
#include<bits/stdc++.h>
using namespace std;
char s[500010];
int n;
void resetn(int l)
{
if(l>n-2) return ;
if(s[l]=='a'&&s[l+1]=='b'&&s[l+2]=='c')
{
s[l]='c';
s[l+2]='a';
}
if(s[l]=='c'&&s[l-1]=='b'&&s[l-2]=='a')
{
s[l]='a';
s[l-2]='c';
resetn(l-4);
}
resetn(l+1);
return ;
}
int main()
{
freopen("string.in","r",stdin);
freopen("string.out","w",stdout);
cin>>n;
cin>>s;
resetn(0);
for(int i=0;i<n;i++)
{
cout<<s[i];
}
fclose(stdin);
fclose(stdout);
return 0;
}
不知道为什么会出现这种情况,请大佬解释一下谢谢