P1322 logo语言网页链接P1322 logo语言题目描述Logo 语言命令可以指挥海龟在屏幕中爬行。本问题只使用 Logo 语言的三个语句前进FD倒退BK和重复REPEAT因此海龟只在一条直线上来回爬行。输入一行 logo 的命令行输出海龟在屏幕中离开原来位子的距离假设屏幕很大可以让海龟移开10 9 10^9109的距离。例如输入FD 100输出100 100100。输入FD 100 BK 150 输出50 5050。输入REPEAT 5[FD 100 BK 50] 输出250 250250。输入REPEAT 5[FD 50 REPEAT 10[FD 100]] 输出5250 52505250。输入格式一行一个字符串符合上述规定的 logo 命令行。输出格式一个数据海龟离开原来位子的距离。输入输出样例 #1输入 #1FD 100输出 #1100说明/提示每个语句输入数据的绝对值不超过1000 10001000。输出结果不会超过10 9 10^9109。解题思路本题核心是递归下降解析专门处理命令的嵌套结构是解决带括号嵌套问题的最优解法。海龟仅在直线移动只需计算总位移。定义递归函数解析一段命令读取命令字符若为FD则累加移动距离BK则减去移动距离若为REPEAT读取重复次数递归解析括号内的子命令将子命令的总位移乘以次数后累加到当前结果。遇到]时结束当前层递归返回本段位移。最终输出总位移的绝对值即为海龟与初始位置的距离。递归天然适配嵌套命令逻辑简洁直观完美处理所有测试用例。总结核心逻辑递归解析嵌套的LOGO命令分别处理前进、后退、重复指令计算总位移。关键操作FD累加位移、BK递减位移、REPEAT递归解析子命令并乘以次数。效率保障递归遍历一次命令字符串时间复杂度O ( 命令长度 ) O(\text{命令长度})O(命令长度)简洁高效无冗余。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;intdg(){string s;charc;intk,l0,v;while(cinc){if(c])break;cinsk;if(cR){vgetchar();lk*dg();vgetchar();}if(cB)vgetchar(),l-k;if(cF)vgetchar(),lk;if(vint(]))break;}returnl;}intmain(){coutabs(dg());return0;}