这是我的问题:
给定一个长度为6的int数组,我想知道属于该数组的哪一对数字是它的中心。这意味着,如果将数组划分为3个长度为== 2的小数组,并且如果将它们作为单对坐标放在矩阵中,(其中第一个坐标表示i的值,第二个坐标表示j)的值,你会在矩阵上得到类似“L”的东西。因此,中心是长度= 2的小坐标,位于L的中间位置。我知道这很混乱,所以这是一个图像:
PD:唯一可用的“小阵列”是:
{array[0],array[1]}
{array[2],array[3]}
{array[4],array[5]}
希望你能帮助我!我正在制作游戏的逻辑!抱歉我的英文!
答案 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)
答案 5 :(得分:-2)
我相信你只是在寻找一个平均值:
i = (array[0] + array[2] + array[4])/3;
j = (array[1] + array[3] + array[5])/3;