关于题目的这句话:
其中F i x y
表示新建变量 i(变量 i 不可与未被销毁的变量重名)
如果本题中的程序的变量名重复了,但由于上一层循环的 x>y,因此程序不可能执行到这一步,那正确答案是 ERR
还是 Yes
或 No
?
例如:
输入
1
6 O(n^1)
F a 1 n
F b n 1
F a 1 n
E
E
E
像上面这个样例,实际程序运行中根本不会发生重名错误,因为 n 远大于 100 远大于 1,第二层循环根本不会开始,会以 O(n1) 的复杂度结束。
通俗的讲,像这样的 ERR
是指 CE
还是 RE
?我们无法确定编程语言 A++ 是像 Python 一样一边编译一边运行,还是像 C 一样先全部编译再运行。
我个人是倾向于 RE
,也就是说上述的样例应该输出 Yes
,但出题者应该倾向于 CE
,本题的测试数据#9的第5个程序像上述的一样,答案是 ERR
。
当然,如果是我眼瞎看漏题目,那没事了。