深痛教训——3.29

死亡回放

image
image
image
image

错误的

L[++s]=R[s-1]+1;

正确的

s++;
L[s]=R[s-1]+1;

分析

关于 \(L[++s]=R[s-1]+1;\) 这一行代码,表示的是将 \(R[s-1]+1\) 复制给 \(L[++s]\) ,是从右往左执行的,也就是说在 \(++s\) 之前就已经计算了 \(R[s-1]\) ,也就是说这个 \(R[s-1]\) 实际上表示 \(R[s-2]\)

所以为了避免歧义或发生纸张错误,应写成 \(s++;L[s]=R[s-1]+1;\)

写成 \(L[++s]=R[s]+1\) 也是可以的,但是为了避免歧义,还是写成上面的形式好。

现在知道为什么伪代码是 \(a←b\) 了。

不是为啥我前几道也是那么打的只有 \(8\) 出错了啊?

posted @ 2024-03-29 14:15  卡布叻_周深  阅读(23)  评论(4编辑  收藏  举报