这是第十四届全国青少年信息学奥林匹克竞赛的最后一题程序阅读题,我看了好久都没看懂

最大的疑问就是solve过程中的两个自我引用,第一个solve执行到什么时候会跳出执行第二个solve,又是何时跳出执行write的呢?希望高手能给出详细的解析过程!谢谢... 最大的疑问就是solve过程中的两个自我引用,第一个solve执行到什么时候会跳出执行第二个solve,又是何时跳出执行write的呢?希望高手能给出详细的解析过程!谢谢!!
procedure solve(first:string;spos_f,epos_f:integer;mid:string;spos_m,epos_m:integer);
var i,root_m:integer;
begin
if spos_f > epos_f then exit;
for i:=spos_m to epos_m do
if first[spos_f]=mid[i] then begin
root_m:=i;
break;
end;
solve(first,spos_f+1,spos_f+(root_m-spos_m),mid,spos_m,root_m-1);
solve(first,spos_f+(root_m-spos_m)+1,epos_f,mid,root_m+1,epos_m);
write(first[spos_f]);
end;
var first,mid:string;
len:integer;
begin
readln(len);
readln(first);
readln(mid);
solve(first,1,len,mid,1,len);
writeln;
end.
输入:7
ABDCEGF
BDAGECF
输出:_________________________________
展开
我只是只酱油别杀我
2011-09-27 · 超过18用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:60.2万
展开全部
先把文字拷到txt中,再把后续名改成pas,再拉到free pascal中 ,用make设定变量,自己一个一个看下来
likuoran
2011-09-22
知道答主
回答量:5
采纳率:100%
帮助的人:3.5万
展开全部
此程序功能为由二叉树先序序列和中序序列求后序序列,程序递归执行当左边界大于右边界时,说明串长为0,跳出循环。答案为:DBGEFCA。把分拿来!
追问
你说的我明白,但你没有详细回答我的疑问:第一个solve执行到什么时候会跳出执行第二个solve,又是何时跳出执行write的呢?你说的太笼统了!能再详尽点吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式