我需要将2d数组分成像这个图像中的块(我不能发布图像)
如果主对角线= 1。然后我检查下一个广场。如果我有矩形,我只检查点(0,0)和(1,1)。 阵列可分为4 * 4,3 * 3,2 * 2的正方形。 我认为一定是这样的
for (int i=start;i<start+len_of_square;i++)
for (int j=start;j<start+len_of_square;j++)
{
//do checking
}
但只有当数组可以分成相等的方块时它才会起作用。 是否有一些算法可以做到这一点?
答案 0 :(得分:1)
我对堆栈溢出的规则和规定了解不多。检查以下算法是否符合您的要求。而不是循环遍历所有单元格并使用&#34逐个消除;如果&#34;使用以下方式。它会快得多,因为循环只运行完整数组/分区时间的长度
for(int i=0;i<length of full array/division && i<length of full array;i++)
{
for(int j=0;j<length of full array/division && j<length of full array;j++)
{
//do operation for array[divison*i][division*j] and array[divison*i+1][division*j+1]
}
}
它将根据图片检查除法是否为4(0,0),(1,1),(0,4),(1,5),(0,8),(1,9), (4,0)(5,1)....命令