【发布时间】:2016-12-20 23:55:59
【问题描述】:
我有很多时间试图解决这个问题。
它的工作原理是什么?基本上用户输入数组的长度和宽度。然后选择他想要阵列上 X 的位置。基本上像扫雷游戏。这是一个例子!
Example #1
Input
1. 3 //length
2. 5 //width
3. {1}
4. {1}
Return
{{X, 1, 2},
{1, 2, 3},
{2, 3, 4},
{3, 4, 5},
{4, 5, 6}}
Example #2
1. 5
2. 7
3. {2, 4}
4. {3, 7}
Return
{{3, 2, 3, 4, 5}
{2, 1, 2, 3, 4}
{1, X, 1, 2, 3}
{2, 1, 2, 3 ,4}
{3, 2, 3, 2, 3}
{4, 3, 2, 1, 2}
{3, 2, 1, X ,1}}
EDIT: More easy example
input 3 length
input 3 width
cordinnates {1,1}
Return
{{X , 1 , 2}
{1 , 2 , 3}
{2 , 3 , 4}}
编辑:两个块之间的距离是 它们的水平和垂直距离(因此对角线方向的移动被认为是距离 2)。
这是我的代码!我不知道如何计算每个数字上到 X 的距离!任何帮助/提示?
public static int[][] getMapGrid(int cityLength, int cityWidth, int XCoordinates, int YCoordinates)
{
int contador = 0;
bool vira = false;
int[,] city = new int[cityLength,cityWidth];
Console.WriteLine(city.Length);
contador = cityWidth;
city[XCoordinates, YCoordinates] = X;
for (int a = 0; a < cityLength; a++)
{
for (int b = 0; b < cityWidth; b++)
{
if (XCoordinates != b && YCoordinates != a)
{
if (vira != true)
{
city[a, b] = contador;
contador--;
}
else
{
contador++;
city[a, b] = contador;
}
}
else
{
vira = true;
}
Console.Write(city[a, b]);
}
Console.WriteLine();
}
Console.ReadLine();
return null;
}
【问题讨论】:
-
你是如何定义距离的?
-
我不是,我真的不知道在哪里定义它......真的不知道如何!
-
嗯,你问的是到 X 的距离。这是一个斜边距离还是你需要跳转到 X 的单元数?如果是单元格的数量,是否允许对角线跳跃?在任何人可以帮助您之前,您需要弄清楚这一点。
-
也就是说
1,1和2,2之间的距离是一还是二? -
您要查找的距离类型称为Manhatten Distance。
标签: c# arrays multidimensional-array