编了几个测试数据都没问题,提交一个都没过

P1030 [NOIP2001 普及组] 求先序排列

帮我康康哪里有问题
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


| 下一页