#define boyut 24
void rasgele_matris(int dizi[][boyut])
{
srand(time(NULL)); //sistem satine göre random sayı üretecek.
int i, j;
for (i = 0; i < boyut; i++)
for (j = 0; j < boyut; j++)
{
int rasgele = rand() % 2;
dizi[i][j] = rasgele;
}
}
我想在我的矩阵中计算邻居。例如,对于dizi [2] [2] indis邻居[1] [1],[1] [2],[1] [3],[2] [1],[2] [3],[3] [1],[3] [2],[3] [3]需要所有邻居的indis值求和。怎么做?
答案 0 :(得分:0)
关于此问题,有很多关于堆栈溢出的帖子。 这里有一个很好的答案:efficient neighbours,即使问题有一个java标记,该答案的代码在C中也可以正常工作。
这是一个实际的实现:
#include<stdio.h>
#define MIN_X 0
#define MIN_Y 0
#define MAX_X 2
#define MAX_Y 2
int main()
{
int sum=0;
int grid[3][3] = {{1,1,1},{1,1,1},{1,1,1}};
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
int thisPosX=i;
int thisPosY=j;
int startPosX = (thisPosX - 1 < MIN_X) ? thisPosX : thisPosX-1;
int startPosY = (thisPosY - 1 < MIN_Y) ? thisPosY : thisPosY-1;
int endPosX = (thisPosX + 1 > MAX_X) ? thisPosX : thisPosX+1;
int endPosY = (thisPosY + 1 > MAX_Y) ? thisPosY : thisPosY+1;
for(int rowNum=startPosX; rowNum<=endPosX; rowNum++)
for(int colNum=startPosY; colNum<=endPosY; colNum++)
sum+=grid[rowNum][colNum];
sum=sum-grid[i][j];
printf("%d ",sum);
sum=0;
}
putchar('\n');
}
return 0;
}