gpt4 book ai didi

algorithm - 以越来越小的螺旋线穿过方阵

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:43 25 4
gpt4 key购买 nike

我想要做的是一种算法,该算法以闭合螺旋模式通过矩阵,如下所示:

1 | 2 | 3
---------
8 | 9 | 4
---------
7 | 6 | 5

解决这个问题最简单的方法是什么?

我的想法:

  • 拐角或障碍物检测。
  • 有一个程序化的方式来垂直向下和反向。
  • 有一种方法可以检测元素是否已被访问。

P.S:不确定如何处理大小不是正方形或宽度为偶数的情况。

最佳答案

您不需要每个单元格的已访问概念,只需要一个变量来指示您有多远。

下面是一些(未经过广泛测试的)Java 代码来执行此操作。

它应该非常可读。

  // initialize
int w = 5, h = 7;
int[][] arr = new int[w][h];

// do the work
int count = 1;
for (int i = 0; count <= w*h; i++)
{
// go right
for (int x = i; x < w-i && count <= w*h; x++)
arr[x][i] = count++;

// go down
for (int y = i+1; y < h-i && count <= w*h; y++)
arr[w-i-1][y] = count++;

// go left
for (int x = w-2-i; x >= i && count <= w*h; x--)
arr[x][h-i-1] = count++;

// go up
for (int y = h-2-i; y > i && count <= w*h; y--)
arr[i][y] = count++;
}

Java .

输出:

  1  2  3  4  5
20 21 22 23 6
19 32 33 24 7
18 31 34 25 8
17 30 35 26 9
16 29 28 27 10
15 14 13 12 11

关于algorithm - 以越来越小的螺旋线穿过方阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com