有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在二维数组中解决NxN难题

我正在用Java2D数组(int state[][])解决一个NxN难题,我被卡住了

我使用的是曼哈顿距离启发法。现在的问题是如何对节点的后续节点进行编码。我在网上看到了很多例子,一个节点的后继节点(邻居)是如何生成的,但它们都是一维数组。我找不到任何教程教生成2D数组中节点的后续节点

如何编写代码以生成节点的后续节点?节点可以向左、向右、向下或向上移动到空白空间。电路板的大小为NxN

这是我第一次使用2D数组来编写类似这些谜题的游戏


共 (1) 个答案

  1. # 1 楼答案

    可能是您定义的代码

    UP as ( i + width * (j-1))
    DOWN as ( i + width * (j+1))
    LEFT as ( i - 1 + width * j)
    RIGHT as (i + 1 + width *j)
    

    您需要分别将它们定义为(i,j-1),(i,j+1),(i-1,j),(i+1,j)

    编辑:

    在一维数组中,需要展平元素索引。如果元素位于第i列第j行,平面地址将是(j*宽度[表示跳过j行]+i[表示跳过此行中的i项])。如果您有一个2D数组,那么您可以简单地使用数组[i][j]而不是平面地址