一道站外题,代码玄学,有一个变量改的范围很自由
  • 板块学术版
  • 楼主LoadingSpace
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/9/30 15:45
  • 上次更新2023/11/2 16:58:07
查看原帖
一道站外题,代码玄学,有一个变量改的范围很自由
959286
LoadingSpace楼主2023/9/30 15:45

站外题在这

用一个递归的思想,虽然会超时,但可以拿五十分,

于是十分玄学的地方出现了,看代码内注释

#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);
  //			 ^这里,减去4到100之间得五十分,减去4到1之间得35分,减去101到500之间得45分,减去501到1000之间得40分,再大没测
	}
	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;
}

不知道为什么会出现这种情况,请大佬解释一下谢谢

2023/9/30 15:45
加载中...