原先,我的代码长这样
#include<bits/stdc++.h>
#define test puts("test")
using namespace std;
string mid,rgt;
string lft(string mid,string rgt) {
if (mid.size() == 1) return mid;//注意这句话
int t = mid.find(rgt[rgt.size() - 1]);
string lm = mid.substr(0,t),rm = mid.substr(t + 1,mid.size() - 1);
string lr = rgt.substr(0,t),rr = rgt.substr(t,rgt.size() - 2);
return mid[t] + lft(lm,lr) + lft(rm,rr);
}
int main() {
cin >> mid >> rgt;
cout << lft(mid,rgt) << endl;
return 0;
}
样例RE
之后,我又把第6行改为
if (mid.size() <= 1) return mid;
结果60,RE后两点
再然后,又改成
if (rgt.size() <= 2)
{
reverse(rgt.begin(),rgt.end());
return rgt;
}
大红大紫40分
很奇特