- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个深度优先搜索程序,它搜索二维数组以查找数字 1,并且始终从 0 开始。我在查找数组中每个元素的邻居时遇到一些麻烦,我有一个方法(基于此处找到的伪代码 Finding neighbours in a two-dimensional array ):
private static void findNeighbour(Integer[][] maze) {
int row = 0;
int col = 0;
int row_limit = maze.length;
if(row_limit > 0){
int column_limit = maze[0].length;
for(int y = Math.max(0, col-1); y <= Math.min(col+1, column_limit); y++){
for(int x = Math.max(0, row-1); x <= Math.min(row+1, row_limit); x++){
if(x != row || y != col){
// printArray(maze);
neighbours.push(x);
neighbours.push(y);
}
}
}
}
}
本质上,我试图遍历二维数组,找到每个邻居,然后将邻居放入堆栈中,以便我可以将它们从 dfs 中的堆栈中弹出。我将我正在使用的迷宫以及我当前获得的输出放在下面。如果有人能指出我正确的方向/指出任何似乎导致它找不到邻居的事情,我将不胜感激。
迷宫:
static Integer[][] maze = { { 11, 3 }, { 2, 3 }, { 0, 3 }, { 1, 4 }, { 5, 4 }, { 5, 7 }, { 6, 7 }, { 7, 8 }, { 8, 9 },
{ 9, 10 }, { 0, 5 } };
输出:
[1, 0, 0, 1, 1, 1]
最佳答案
逻辑没问题。您可以使用 int
代替 Integer
对象包装器。另外使用一些数据结构会更好。行/y 通常是垂直的 maze[y]
,列是水平的 maze[y][x]
,因此 maze[y]
是水平的线。
private static List<Point> findNeighbours(int[][] maze, Point pt) {
List<Point> neighbours = new ArrayList<>(8); // Reserve only 8 points
int height = maze.length;
if (height > 0) {
int width = maze[0].length;
for (int y = Math.max(pt.y - 1, 0); y <= Math.min(pt.y + 1, height); ++y) {
for (int x = Math.max(pt.x - 1, 0); x <= Math.min(pt.x + 1, width); ++x) {
if (!(y == pt.y && x == pt.x)) {
neighbours.add(new Point(x, y));
}
}
}
}
return neighbours;
}
现有的技术有:
关于java - 在二维数组中查找邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556568/
我从 SpatialPolygonsDataFrame 开始,它包含用于创建加纳各地区 map 的数据(可在 http://www.diva-gis.org/datadown 获取)。我正在尝试创建一
我遇到了一个问题,我需要根据存储在前一个元素中的信息修改容器的元素。示例: 如果前一个 vector 元素可被 2 整除,则将当前元素乘以 10 vector -> [12, 11, 33, 10]
总的来说,我对脚本编写还很陌生。我正在编写一个 expect 脚本,它通过 ssh 进入 Cisco 交换机,并运行“show cdp neighbors”命令来获取连接到交换机的所有设备的列表。然后
我正在尝试比较节点的值。使用 flood-fill 算法,我能够垂直和水平检查网格的每个节点。现在我必须更新我的代码以检查位于对 Angular 线上的单元格,如下图所示: 红色是当前节点,黄色是需要
我使用预先计算的指标使用 Scikit-Learn 的最近邻/半径分类。这意味着,我将成对距离的 n_samples_train x n_samples_train 矩阵传递给分类器的拟合方法。 现在
我有一个大的稀疏图,我将其表示为邻接矩阵(100k x 100k 或更大),存储为边数组。具有(非稀疏)4 x 4 矩阵的示例: 0 7 4 0 example_array = [ [7,1,2],
从有向图中并给出两个顶点 (v, u) 我需要找到:共同的“出”邻居和共同的“入”邻居。 例如: import networkx as nx ghybrid = nx.DiGraph() ghybri
我正在使用 JavaScript 进行图像处理,我想知道是否有任何通用公式可以确定像素的 x 邻居。 我知道对于 3*3 的正方形,可以使用特定的 x 和 y 像素确定 8 个邻居。 (x-1,y-1
在 CentOS 6.4(内核 2.6.32)上,为什么下面的第二个 arping 调用会创建一个新的 ARP 表条目,而第一个不会?网络行为是相同的,我感到困惑的是,在我看来,系统调用实际上是等同的
我是一名优秀的程序员,十分优秀!