后续应该还会发布一些关于 软件设计师题目的解题思路,或软件设计师的笔记资料,有需要的可以来我的个人主页搜索
2020年下半年软件设计师上午题49题
三种解题思路
第一种 排除法
- 这相当于硬凑,首先,上下文无关管文法中没有()和 / 符 ,所以可以直接排除B和D选项
- 仅限用于这题,根据符 排除了BD选项,题目有说明,id表示单个字母表示变量,C选项中有数字,这CFG无法产生数字,所以C也可以直接排除,但还是建议看下第二种推理过程
第二种 自底向上推
-
C需要 * – + 这三个运算符
-
- + 和 – 可以有不少符合的条件实现,但是* 只能由T->TF,并且要保证a-b的要求,后面久必须跟上一个 – ,所以F转为-F,现在的得出的式子就是T-F,需要最后一个 + ,向上寻找,T只能由E+T|E-T|T 给出,加 都只能排在 T*-F 这一块的前面,所以C选项是错误的
-
A需要+ – – 这三个运算符
-
- 最好先考虑两个符 连在一起的情况,+ -, – 这个符 标志比较有特征,-b只能是负数,所以-F是必定需要的,,然后就是如何插入-F的问题,-F是由F给出,F由T给出,T由E给出,关于E的有两个式子,-F的前面是 + ,所以-F要挨着+ ,向上推又是由T给出的,E+T就可以满足专为E±F,这时还差一个 – ,E – T,E再分解,可以分解为E+T|E-T|T,所以只要E-T的E分解一下,变成E+T-T,中间的T分解为-F,得出式子分解为E±F-T,最后分解为id±id-id,就可以表示单个字母表示的变量,故答案为A
第三种 自顶向下推
总结
- 三种方法各有好处,第一种快速,但容易错,难点的也不好解,第二种抓细节,难点也好解开,第三种,需要一定想象力
- 如果确实对你有帮助别忘记一键三连支持一下哦??
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!