HDU 1886 Gates of Logic
传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=1886
问题描述
计算机科学与技不仅学习算法还学习计算机硬件有关的课程。一个这样的入门课程,阐述了集成电路的基本原理(“芯片”),二进制逻辑,布尔代数……你可能知道,逻辑电路的基本单元称为门。一个门是一个执行一个简单的逻辑操作的元素。他可以通过线来连接到其他门。

逻辑电路可以被画成一张有很多左边是输入右边是输出的逻辑门。每个逻辑门中,有一个符号,用于确定门型:1号代表一个或门(其输出为0当且仅当没有输入为1),&是一个与门(输出1当且仅当没有0输入),=是异或门(输出为1当且仅当有奇数输入值为1)。
你的任务就是对于这样一张图片计算出所有电路输出的值,保证一个一个输入口一定会被一个输入源接入。并且电路中没有反馈环节,即不存在一个环连接同一个电路两次。
输入
输入中包含很多张图片,每张图片至少一行至多200行并且只包含以及下字母。
- 空格 (” “). 空格用于让其他符号在其应该在的位置上,但是行末空格可能有,可能没有。
- 连接符 (“-“). 连接左右的导线
- 分割线 (“|”).连接上下的导线
- 加号 (“+”). 连接上下左右的导线
- 小写字母 x (“x”). 连接上下/左右的导线,但是上下连接和左右连接相互不影响。
- 等号 (“=”). 连接输入源或者输出源。在逻辑门的左边则为一个连接一个输入源,在逻辑门的右边则连接一个输出源。
- 小写字母 o (“o”). 取反,让信号置反。
- 井号 (“#”). 逻辑门的边框。
另外逻辑门最小也应该是3*3的,因为需要包含一个逻辑门符号。
- 0/1信号 (“0” and “1”). 代表一个输入源,信号永远保持其数值。
- 大写字母 (“A” through “Z”). 逻辑电路输出源,只接受从其左边来的信号。
每张图片会用一行*隔开,数量不定,最少一个最多200个。
输出
对每张图片,字母顺序输出每个输出源的值,详见样例。图与图之间的答案空一行。
样例输入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
0=+ | | ####### +=# # # & #o=--+ 1=------=# # | # # | ####### +--=### ### | #=#=#1#o==X 1=-----------x--=# # ### 1=---x--=### +------------=Y *********************************** 1=A *** * |
样例输出
1 2 3 |
X=0 Y=1 A=1 |

原文链接:HDU 1886 Gates of Logic
WNJXYKの博客 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!