gpt4 book ai didi

c - 将二维数组划分为所有可能的 nxn 正方形

转载 作者:行者123 更新时间:2023-11-30 15:48:12 26 4
gpt4 key购买 nike

已经花了几个小时在这上面了(因为我还在学习),所以也许你们可以帮忙。问题是我无法弄清楚如何将二维数组划分为所有可能的 nxn 正方形。 我正在随机化二维数组,可以说它是这样的:

1 0 1   
0 2 2
3 5 1

这个矩阵中有 5 个 nxn 方格 4-2x2 和 1-3x3

目标是将所有这些方 block 作为一个单独的数组,一一交给函数。

附:抱歉英语不好

<小时/>

简化:

我输入这个数组:

char array[9] = {1,0,1,0,2,2,3,5,1};

并且想要将以下数组传递给函数:

char array[9] = {1,0,1,0,2,2,3,5,1};
char array[4] = {1,0,0,2};
char array[4] = {0,1,2,2};
char array[4] = {0,2,3,5};
char array[4] = {2,2,5,1};

如何从主矩阵中提取这些子矩阵?

最佳答案

实现此目的的常用方法是提供行/列偏移量和大小:

void DisplaySubArray( int arr[3][3], int x0, int y0, int size ) 
{
int x, y, *row;

for( y = 0; y < size; y++ )
{
row = &arr[y0+y][x0];
for( x = 0; x < size; x++ )
{
printf( "\t%d", row[x] );
}
printf( "\n" );
}
}

以及枚举:

const int N = 3;
int arr[3][3] = { 1, 0, 1, 0, 2, 2, 3, 5, 1 };
int x0, y0, size;

for( size = 2; size <= N; size++ )
{
for( y0 = 0; y0 <= N-size; y0++ )
{
for( x0 = 0; x0 <= N-size; x0++ )
{
printf( "%dx%d at position (%d,%d):\n", size, size, x0, y0 );
DisplaySubArray( arr, x0, y0, size );
}
}
}

关于c - 将二维数组划分为所有可能的 nxn 正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16907608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com