社区讨论
和题解几乎一样,为什么会mle
P1030[NOIP 2001 普及组] 求先序排列参与者 2已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @mlqor0so
- 此快照首次捕获于
- 2026/02/17 22:15 前天
- 此快照最后确认于
- 2026/02/18 21:48 14 小时前
只有第一个点ac,剩下全mle
请忽略注释,这是我原来写的,也是mle
现在几乎改的和题解一模一样了,但搞不懂为什么过不了
谢谢大家!
CPP#include<bits/stdc++.h>
using namespace std;
//屎山代码哈,不处
string z,h;
void fun(string z,string h){
char ch=h[h.size()-1];
cout<<ch;
if(z.size()==1||h.size()==1)return ;
int len=z.find(ch);
//substr用法:从哪里开始,连续取几个字符
fun(z.substr(0,len),h.substr(0,len));
fun(z.substr(len+1,z.size()-len-1),h.substr(len,h.size()-len-1));
}
/*void fun(int z1,int z2,int h1,int h2){//标记中序和后序的起始下标
char ch=h[h2];//直接获取根结点
cout<<ch;//华丽输出
if(z2==z1||h2==h1) return ;//如果长度到达了1
/*int len=z1;//记录ch在中序的位置
//错因1:len应该从z1(当前的开始,而不是全局的开始)开始
for(;len<=z2;len++)
if(z[len]==ch)break;
len--;//因为len++会再多加一次*/
/*int len=z.find(ch);
fun(z1,len-1,h1,h1+len-z1);//左子树
fun(len+1,z2,h1+len-z1+1,h2-1);//右子树
}*/
int main(){
ios::sync_with_stdio(0);
cin>>z>>h;
fun(z,h);
//fun(0,z.size()-1,0,h.size()-1);
return 0;
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...