使用“铅笔”在网格上“绘制”数字

时间:2014-02-09 16:33:58

标签: c++

如何解决此问题?说明如下:

想象一个正方形网格。现在使用以下命令“绘制”数字(0-9):

  • U - 在顶部划一条方格
  • D - 在底部划一条方格
  • L - 在左边划一条方格
  • R - 向右划一条方向
  • ^ - 从“纸张”中取出“铅笔”
  • _ - 将“铅笔”放在“纸上”

输入:

第一行:int N,表示要检查的数字量 接下来的N行由一个字符串组成,该字符串确定命令的顺序 例如:

2
UL^D_RDLR^U
D^LLDRR_U

输出:

3 1

输出一行数字,分隔一个空格。

我希望我解释得很好(英语不是我的第一语言)。

1 个答案:

答案 0 :(得分:1)

这是一种可能的方法。

将一系列命令转换为一系列线段。为您必须识别的每个数字预先计算一系列线段。 (请记住,6和9可以用两种不同的方式表示!)

现在发明一种比较两个线段阵列的方法,给定

  • 图片中段的顺序无关紧要
  • 分段方向无关紧要
  • 绝对坐标无关紧要,但相对坐标
  • 绘制线段的次数如果大于零则无关紧要

当需要比较两个值并且这些值的某些方面无关紧要时,常见的策略是转换这两个值,使这些方面处于规范形式。例如,要比较字符大小写无关紧要时的两个字符串,可以将两个字符串转换为大写字母,这是一种规范形式,用于不区分大小写的比较。你的任务是为每个无关紧要的枚举事物提出一个规范形式。