帮我康康哪里有问题
by shiqiD7 @ 2024-04-06 10:55:35
@[shiqiD7](/user/1160672) i用来干嘛的
by __Tonycyt__ @ 2024-04-06 10:59:31
@[__Tonycyt__](/user/667037) i是pos序列中根的指针,j是mid序列中根的指针
by shiqiD7 @ 2024-04-06 12:26:16
我看了半天觉的没问题,于是把你的代码交了上去。
交完之后我就知道了,你不早点跟我说你是RE了。
你的这个函数需要增加一个特判 `if(i<=0) return;`
by __Tonycyt__ @ 2024-04-06 13:15:12
然后输入就正常输入就行了,不需要getline
by __Tonycyt__ @ 2024-04-06 13:19:49
然后现在MLE了三个点。。。
by __Tonycyt__ @ 2024-04-06 13:21:41
好吧,好像你的代码思路上是对的,但是实现上有点小问题
by __Tonycyt__ @ 2024-04-06 13:36:47
需要把递归函数的参数改成两个 string
by __Tonycyt__ @ 2024-04-06 13:37:25
用到了一点点字符串的东西,不过帮你调出来了
```cpp
#include<bits/stdc++.h>
using namespace std;
void solve(string midn, string posn) {
if(midn.size()<=0) return;
char ch = posn[posn.size() - 1];
cout << ch;
int j = midn.find(ch);
solve(midn.substr(0, j), posn.substr(0, j));
solve(midn.substr(j + 1), posn.substr(j, posn.size() - j - 1));
}
int main() {
string mid, pos;
cin>>mid>>pos;
solve(mid, pos);
return 0;
}
```
by __Tonycyt__ @ 2024-04-06 13:39:53
@[shiqiD7](/user/1160672) 我以前做这题的时候,也是想像你这样用几个数字作为函数参数,虽然感觉是对的,但是就是会MLE(内存超出限制),也是像帮助你这次一样的离谱错误,改成了string,就对了。。。
by __Tonycyt__ @ 2024-04-06 13:42:27