Follow My Logic解题报告.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Follow My Logic 解题报告 Follow My Logic 解题报告 题目重述 算法设计 主要数据 实现 优化 Follow My Logic 题目重述 对于一个逻辑电路和给定的输入值,计算该电路的输出值。该逻辑电路有一个或多个输入端, 零个或多个逻辑门电路,和一个输出端。本题中用标准ASCll字符来表示逻辑电路:横竖导线分别用‘-’和‘|’表示,转折点用‘+’表示,输入端用大写字母‘A’-’Z’表示,输出端用问号‘?’表示,小写字母‘o’表示取反。与门、或门及电路各部分示例如下: :\ :\ -:\ -o:\ A-o:\ : ) : : )- : )o- : )o-? :/ :/ -:/ --:/ B-- :/ 与门 或门 带输入输出 输入输出 完整电路 的门电路 取反的门电路 Follow My Logic 题目重述 题中的逻辑电路满足以下条件: 1.逻辑电路图中至多有100行,每行至多有100个字符。 2.电路走向在交叉点转90?,其余部分沿直线传播。任意 两个交叉点都不相邻(竖直方向和水平方向)。 3. 整个电路是连通的,不含残缺电路。 4. 两段电路之间不会交叉。 5. 门电路(与门、或门)的输入端与输出端都是水平的。 6. 取反运算的出现只会在紧挨门电路输入端之前,或紧挨门电路输出端之后。(如上图所示) Follow My Logic 题目重述 输入: 输入数据包含多个输入数据块。每个输入数据块包含以下部分: 一个电路图,以上述形式表示,用只含‘*’的单独一行结束。 多行01字符串,每行对应一组数据,包含26个0或1,分别对应A-Z的值。用只含‘*’的单独一行结束 输出: 对每组输入数据,输出对应的电路输出值。 每个结果占一行。 不同输入数据块的输出结果之间用空行隔开。 Follow My Logic 算法设计 这是一道模拟类的题目 第一种思路: 模拟人读逻辑电路的做法,按照逻辑电路的走向确定在门电路的各个输入端的值,计算门电路输出端的值。如此反复,最终求得电路的输出值。 第二种思路: 自上至下,自左至右,顺序求解。 关键: 确定电路在交叉点的走向; 从门电路的一段输入电路转到另一段电路。 Follow My Logic 主要数据 根据算法要求需要存储的数据有 1.int row, column 用来表示电路图的行数和最大宽度; 2.int ish, dir 用来表示电路走向(水平或竖直、正向或负向); 2.char logic[100][100] 用来存储逻辑电路图; 3.int state[100][100] 用来存储电路上每一个点的值; 4.int value[26] 用来存储A-Z的值。 Follow My Logic 程序实现 确定电路在交叉点的走向 根据题意,没有两个交叉点相邻,一个交叉点周围只有‘-’和‘|’。分两种情况讨论。 if(ish) //原先为水平方向 { if(xrow-1logic[x+1][y]==‘|’) //转向下 dir=1; else //转向上 dir=-1; ish=0; x+=dir; } Follow My Logic 程序实现 else //原先为垂直方向 { if(ycolumn-1logic[x][y+1]==-) dir=1; //转向右 else dir=-1; //转向左 ish=1; y+=dir; } Follow My Logic 程序实现 电路分析流程: 通过两个函数hdsearch()和process()的嵌套调用实现。 process() 用于从某一位置根据电路走向计算下一位置的值,直至获得输出结果,或到达某一门电路无法继续。 hdsearch() 用于从某一位置寻找这段电路的开头(字母输入值)。 程序从process(

文档评论(0)

wuhuaiyu002 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档