【问题标题】:3d Maze Programming3d 迷宫编程
【发布时间】:2016-08-14 14:16:37
【问题描述】:

我正在努力解决这个问题。

我不需要整个代码或逻辑。只需要一些提示让我开始解决这个问题。我应该用什么方法解决这个问题。

问题

假设,一只蚂蚁被困在一个迷宫中,只有一条进出一条路。 迷宫是尺寸为 NxNxN(长度=宽度=高度=N)的立方晶格状结构。进路是最左下角,出路是 右上点(沿主对角线)。下图显示了 N=2 的迷宫。

假设蚂蚁只能沿着迷宫的网格向右、向前或向上移动,计算蚂蚁可以通过的方式总数 逃脱。数学上,右、前和上分别定义为 x、y 和 z 轴上坐标的正变化。

示例: 对于,N=1,网格结构及解如下所示:

因此,对于 N=1,我们有 6 种方式的网络。 输入格式: 单个整数 N

输出格式: 输出还包含一个数字,对应于蚂蚁可以逃离迷宫的方式数量。

约束:

  • 0<N<=8

【问题讨论】:

  • “只需要一些提示让我开始”:递归
  • @RichardCritten 可以应用回溯吗?
  • 您说“迷宫”,但似乎没有一条路径被阻塞。是这样吗?
  • 至少告诉我一些概念或算法?
  • 图论,枚举路径。

标签: c++ algorithm logic


【解决方案1】:

为了摆脱蚂蚁,需要让 N 向右移动,N 向上移动,N 向前移动。

由于没有路径被阻挡,这些移动可以不受限制地以任何顺序进行。

R、U 和 F 移动的每个不同顺序都是不同的路径,因此答案是由 N Rs、Us 和 Fs 组成的不同字符串的数量。

这可以简单地计算为(3N)! / (N!)^3

... 其中! 是阶乘,不是布尔否定,^ 是指数,而不是 XOR :)

【讨论】:

    【解决方案2】:

    基本上和2d谜题一样,但有更多的交叉点。使用 BFS 或 DFS 算法。祝你好运

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多