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,问大佬原因。