c++ - 根据矩阵中的相邻单元格确定值

标签 c++ algorithm

输入:一个由任意大小的 bool 矩阵表示的迷宫。 (越界算0)

00100
00100
01110
11111
01110
00100

输出:一个漂亮的迷宫表示(邻域映射到 wchar_t):

   ┌─┐
   │1│
  ┌┘1└┐
 ┌┘111└┐
 |11111|
 └┐111┌┘
  └┐1┌┘
   └─┘

编辑:基本上每个 0 都映射到表示墙布局的 4 位值。

我的做法和想法:

我认为一次查看每个单元格是最简单的。然后查看它的邻居以确定放置什么样的值。结果我有 8 个 bool 输入(所有邻居),这会生成 2^8=256 个不同的场景。我不想对它们全部进行硬编码。

是否有更优雅的方式来正确映射值?

最佳答案

我在 my winning entry 中实现了这个2004 年 IOCCC。我相信您会发现这些代码文档齐全且易于理解。

如果您只是想要答案,我记得,我采用的方法是计算每个单元格周围已占用单元格的位图,并将其用作墙字符(或等效的字形)数组的索引。如果像我的解决方案一样,您不允许对角线移动,则位图长 4 位,因此数组有 2^4=16 个元素。如果您确实允许对角线移动,则需要一个 8 位位图和 256 个条目。

关于c++ - 根据矩阵中的相邻单元格确定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1743964/

相关文章:

c++ - 在 C++ 中读取直接访问 Fortran 未格式化的文件

python - 最大化平方和模 m 的代码

algorithm - 迭代序列的所有可能变体

c++ - CUDA:复数标量 * 双稀疏矩阵 * 双 vector

algorithm - 如何确定范围列表是否涵盖给定范围?

Python:没有得到列表的最长公共(public)子序列的长度

algorithm - 独特的排列 - 有异常(exception)

c++ - 指向组合接口(interface)的指针 - 指向实现一个接口(interface)并从另一个接口(interface)的实现扩展的类

c++ 本地时间到 mysql 日期时间

c++ - Websphere MQ - 获取时出现错误,原因代码为 2042