Follow My Logic 1048 PKU

Follow My Logic

http://acm.pku.edu.cn/JudgeOnline/problem?id=1048

确定由一个或多个输入、0个或多个与或门组成的逻辑电路

电路路径通过水平线(-45)、垂直线(|124)、联接点(+43)

A--Z代表输入,?代表输出
AND门表示:
:\
: )
:/
OR门表示:
:\
: >
:/
输入或输出带o表示反
Solution:

寻找?位置,然后递归地搜索答案,例如上图,
栈S1保存为
? AND INVERT C INVERT OR A B

? AND INVERT OR A B INVERT C
求ans利用到另外一个栈S2
    B,为输入In(S2,B)
    A,为输入In(S2,A)
    OR 二元操作 temp = Top(S2) OR Top(S2); In(S2,temp)
INVERT, 一元操作 temp = INVERT(Top(S2))
C,为输入In(S2,C)
INVERT, 一元操作 temp = INVERT(Top(S2))
AND二元操作 temp = Top(S2) AND Top(S2); In(S2,temp)
?print (Top(S2)
Top(S)为读出栈顶S,更换栈顶
尽管上面分析看似有理,但是忽略了很多情况,例如

这体现出一个难点:方向的确定
这个程序发现了个问题,C、GCC貌似不支持按引用传参数

原文地址:https://www.cnblogs.com/eavn/p/1754005.html