求问,玄关
查看原帖
求问,玄关
554576
yueluoxingchen楼主2025/7/1 18:16

rt,本人已AC,但有个小困惑想问一下

在关键函数solve中:
如果我们使用全局变量:

string fr,mid;
string lfr,rfr,lmid,rmid;
void solve(string fr,string mid)
{
	if(fr.empty()) return;
	char root=fr[0];
	int midle=mid.find(root);
    if(midle==string::npos) return;
	lfr=fr.substr(1,midle);	
	rfr=fr.substr(1+midle);
	lmid=mid.substr(0,midle);
	rmid=mid.substr(midle+1);
	solve(lfr,lmid);
	solve(rfr,rmid);
	cout<<root;
}

就会WA
但如果使用局部变量:

string fr,mid;
void solve(string fr,string mid)
{
	if(fr.empty()) return;
	char root=fr[0];
	int midle=mid.find(root);
    if(midle==string::npos) return;
	string lfr=fr.substr(1,midle);	
	string rfr=fr.substr(1+midle);
	string lmid=mid.substr(0,midle);
	string rmid=mid.substr(midle+1);
	solve(lfr,lmid);
	solve(rfr,rmid);
	cout<<root;
}

就没有问题
so,问大佬原因。

2025/7/1 18:16
加载中...