计算网格上的最短路径

时间:2018-06-08 19:00:33

标签: c# multidimensional-array

我试图在2D阵列8X8网格上计算所有路径,并让算法遍历网格上的所有方块并配置最短路径。

见下面的代码:

public static int Mileage(int[,] arr, int x, int y, int miles)
{    
    if (x < 0 || y < 0 || x > 5 || y > 5 || arr[x, y] == 2) return 99; 
    if (arr[x, y] == 1) return miles;
    arr[x, y] = 2;
    miles++;
    Console.WriteLine(miles);
    int want2 = Math.Min(Mileage(arr, x - 1, y, miles), Mileage(arr, x + 1, y, miles));
    int want1 = Math.Min(Mileage(arr, x, y - 1, miles), Mileage(arr, x, y + 1, miles));
    return Math.Min(want1, want2);

}

1 个答案:

答案 0 :(得分:1)

测量距离的最佳方法是毕达哥拉斯定理。这就是你如何获得最短路径的方法。然后你只需要得到关闭的网格线,这样就可以在网格上应用。也许此链接可以帮助您https://betterexplained.com/articles/measure-any-distance-with-the-pythagorean-theorem/