计算从正方形中心到边缘的路径

时间:2012-10-29 10:00:39

标签: algorithm logic permutation combinations combinatorics

假设对于某些n,即具有奇数边长的正方形,我有一个大小为(2n + 1)x(2n + 1)的正方形。
从最中心的单元格开始,我有兴趣计算no。到达任何边缘单元的方法(如下图所示)。
只允许非重叠路径,即如果已经访问过该单元格,我们就无法重新访问该单元格。

下图显示了一个方形,其边9(n = 4)和两条可能的长度为5的路径。

Image

我认为所有路径都是长度范围:[n到(2n-1)^ 2 + 1]
算不了。长度路径:
1 - 0
2 - 0
3 - 0
4 - 4
5 - 32
6 - ......?
但随着Path长度的增加,我似乎无法解开所有可能性。我知道对称性在这里发挥作用,但有没有任何结构化的方法来计算所有的路径?

谢谢,

1 个答案:

答案 0 :(得分:2)

要查找从方板中心开始并在边框处完成的路径,您可以使用经过调整的DFS(Depth First Search)来存储已访问过的切片,这样您就不会踩到他们又来了。

董事会确实存在很多对称性。只需注意:

,您可以将搜索路径的数量除以4
  • 从中心开始,您可以 U p D拥有 L eft R ight
  • 开始前往 U p 的所有路径都会生成 D拥有 L eft的所有其他路径 R ight 轮值

一旦你这样做,你可以进一步注意到:

  • 一旦您离开 U ,您就可以 U L R
  • 当您走 L 时生成的所有路径与通过镜像对称性 R 时生成的路径相同。

您可以重复几次,直到到达广场的边界。从 U 开始的全部路径将是:

  • U-U-U-U (一条路径)
  • U-U-U-L
  • 开头的2倍路径
  • U-U-L
  • 开头的2倍路径
  • U-L
  • 开头的2倍路径

计算完毕后,您可以乘以4来获得全部路径。