#P2320. SHEET
SHEET
问题描述
检查电子表格是否有一致的公式定义。
电子表格的任意单元格可包含依赖其他单元格值的公式。在尝试计算单元格值之前,确定该单元格的公式定义是否存在循环至关重要。
我们的电子表格仅支持有限的表达式格式:
定义 := 单元格 "=" 表达式
表达式 := 项 | 表达式 "+" 项 | 表达式 "-" 项
项 := 因子 | 项 "*" 因子 | 项 "/" 因子
因子 := 数字 | 单元格 | "(" 表达式 ")"
数字 := 数字字符 | 数字数字字符
数字字符 := "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
单元格 := "R" 数字字符数字字符 "C" 数字字符数字字符
有效单元格的行和列均为1到20,因此电子表格共有个单元格。
输入
输入包含一行或多行,每行表示电子表格中定义的单元格。
注意:若某个单元格的表达式引用其他单元格,被引用单元格的内容必定已定义,且表达式中不含空白字符。
输出
对输入中定义的每个单元格(按输入顺序),输出一行结果。若计算该单元格会导致循环定义(直接或间接),则输出单元格名称后跟"circular";若可无循环地计算,则输出"ok"。
输入数据1
R01C01=1
R01C02=2
R01C03=R01C01+R01C02
R02C01=(R03C02+1)*R01C03
R03C02=R02C01
输出数据1
R01C01 ok
R01C02 ok
R01C03 ok
R02C01 circular
R03C02 circular
提示
说明
以下电子表格会产生两个循环结果:
R01C01=0*R01C01
R02C01=R02C01-R02C01
关键点:在判断循环性之前,不进行代数化简。
问:若单元格引用了一个循环单元格,即使它未引用自身,该单元格是否被定义为循环?
答:是的。