用Java计算'数组的中心'

时间:2013-11-08 21:54:33

标签: java arrays center

这是我的问题:

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

grid

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

{array[0],array[1]}

{array[2],array[3]}

{array[4],array[5]}
希望你能帮助我!我正在制作游戏的逻辑!抱歉我的英文!

6 个答案:

答案 0 :(得分: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) AND 如果y(索引1)的相同值是在索引3中并且等于(索引5中的值(+/-)1)

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

PS。在上面的例子中,我将L长度固定为1你可以改变它并使用另一个值4,5等。

答案 1 :(得分: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;

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

首先我无法正确理解你的问题。如果我理解的是正确的,那么这里是soluton.eg:你有一个长度为10的int数组。你想把每两个元素放在单独的数组中并找到midle数组顺序。

因此,如果你的输入数组的长度是偶数,那么(数组的长度)/ 2,在我们的例子中是5.然后显然,中间数组将是原始输入中包含第5和第6个元素的数组阵列

如果你的输入数组的长度是奇数,那么就是do(数组的长度+ 1)/ 2,在我们的例子中是6.然后显然你的中间数组将是包含原始数据中第6和第7个元素的数组输入数组。但在这种情况下,最后一个数组不会有第j个坐标。

你没有指定数组的长度。

答案 4 :(得分:-1)

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

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

0, 1
0, 0
1, 0

另一个L形点是:

2, 2
3, 2
3, 1

答案 5 :(得分:-2)

我相信你只是在寻找一个平均值:

i = (array[0] + array[2] + array[4])/3;
j = (array[1] + array[3] + array[5])/3;