当给定n维矩阵和1的网格大小时,我想计算一个字段的最近邻居。 下面给出了一个二维场的例子
P = (1,1)
p_neighbours = [(0,0),(2,2),(0,1),(0,2),(1,0),(2,0),(2,1),(1,2)]
在数学上,这可以像矢量系统中的P +/- 1一样容易描述(据我所知)。 n维相邻阵列的大小被描述为(n ^ 3)-1 我已经找到了一个非常好的old topic,无论如何我无法理解如何将所提出的解决方案扩展到n维函数。
答案 0 :(得分:5)
#include <stdio.h>
#include <stdlib.h>
#define maxstring 100
#define maxc 10
int main()
{
char c, text[maxc][maxstring];
int i, j, n, k;
printf("Enter amount of strings:");
scanf("%d", &k);
for(j=0; j<=k; j++)
{
for(i=0; (c=getchar())!='\n'; i++)
{
text[j][i]=c;
}
}
n=i;
for(j=0; j<=k; j++)
{
for(i=0; i<n; i++)
{
putchar(text[j][i]);
}
}
return 0;
}
答案 1 :(得分:1)
正确地说,n维相邻阵列的大小不是(n ^ 3)-1,它是(3 ^ n)-1(如果n> 3,则数组大小是方式更大!)要在任何维度生成邻居,你必须实现一个递归算法,迭代维度并调用自身(我不知道如何实现这个,但我正在研究它)
答案 2 :(得分:0)
我想应该是这样的
$SKU = array('ASUSVNA1','esx','rer','ASUSasVNA1','itemsdasd','item 24');
$price = array(2,3,4,5,6,7);
答案 3 :(得分:0)
我认为最明确的方法是使用简单的列表理解:
p = (1,1)
px, py = p
p_neighbours = [(px+x,py+y) for x in range(-1,2) for y in range(-1,2) if (x,y) != (0,0)]
这里我们检查(x,y)是不是(0,0)以避免将p本身添加到它的邻居。