1

这是我的问题:

给定一个长度 = 6 的 int 数组,我想知道属于该数组的哪一对数字是它的中心。这意味着如果将数组分成 3 个长度 ==2 的小数组,并且如果将它们作为矩阵中的一对坐标放置,(其中第一个坐标表示 i 的值,第二个表示j) 的值,你会在矩阵上得到类似“L”的东西。所以,中心是位于 L 中间的长度 = 2 的小坐标。我知道这很令人困惑,所以这是一张图片:

网格

PD:唯一可用的一对“小阵列”是:

{array[0],array[1]}

{array[2],array[3]}

{array[4],array[5]}

希望你能帮我!我正在制作游戏的逻辑!对不起我的英语不好!

4

6 回答 6

1

你的例子是错误的!你的数组应该是|0|0|0|1|1|0|

一个简单的检查方法是:

|0|1|2|   3   |    4  |5| 
|x|y|x|y(+/-)1|x(+/-)1|y|
or
|0|1|   2   |3|4|    5  |
|x|y|x(+/-)1|y|x|y(+/-)1|

检查中心是否为 c(x=0,y=1) :

检查 x(索引 0)的相同值是否在索引 2 中并且等于(索引 4 中的值(+/-)1)并且 如果 y 的相同值(索引 1)在索引 3 中并且等于(索引中的值5 (+/-)1)

检查 x 的相同值(索引 0)是否在索引 4 中并且等于(索引 2 中的值 (+/-)1)并且 如果 y 的相同值(索引 1)在索引 5 中并且等于(索引中的值索引 3 (+/-)1)

PS。在上述情况下,我将 L 长度固定为 1,您可以更改它并使用另一个值 4、5 等。

于 2013-11-08T22:18:45.810 回答
1

当给定的单元格的三个坐标形成“L”形时,两个单元格将彼此相对。也就是说,这两个单元格将具有 (a,b) 和 (b,a) 之类的点。所以这两个以外的点将成为中心。

因此,只需找到类似于 (a,b) 和 (b,a) 的两个点。另一点将是中心。

如果第一、第二和三是 (a,b) 形式的三个点,例如

if(first.a==second.b && first.b=second.a)

        return three;

if(second.a==three.b && second.b==three.a)


     return first;

else return second;
于 2013-11-11T10:54:43.873 回答
0

我不确定我是否理解你的问题,给你一个长度为 6 的任意数组,其中包含一些未知方向的 L 形,你必须返回数组中的切片是中心?

那么,我们如何确定中心在哪里?它将是重复两次的 x 和 y 坐标。因此,只需查找重复两次的 x 值,然后查找重复两次的 y 值。你现在有了你的中心。

于 2013-11-08T22:14:46.693 回答
0

首先,我无法正确理解您的问题。如果我理解的是正确的,那么这里是解决方案。例如:您有一个长度为 10 的 int 数组。您想将每两个元素放在单独的数组中,并按该顺序找到中间数组。

因此,如果您的输入数组的长度是偶数,那么只需执行 (数组长度)/2 ,在我们的例子中是 5。那么显然,您的中间数组将是包含原始输入数组中的第 5 个和第 6 个元素的数组

如果您的输入数组的长度是奇数,那么只需执行 (array+1)/2 的长度,在我们的例子中是 6。那么显然您的中间数组将是包含原始输入数组中第 6 个和第 7 个元素的数组。但在这种情况下,最后一个数组不会有 jth co-ordinate 。

您尚未指定数组的长度。

于 2014-03-27T13:07:08.780 回答
-1

您可以使用 3 个点的数组。Point是一个包含 x 和 y 值的 Java 类。

图中红色阴影的 3 点将是:

0, 1
0, 0
1, 0

另一组 L 形点将是:

2, 2
3, 2
3, 1
于 2013-11-08T22:10:31.610 回答
-2

我相信您只是在寻找平均值:

i = (array[0] + array[2] + array[4])/3;
j = (array[1] + array[3] + array[5])/3;
于 2013-11-08T22:07:07.980 回答