如何在行列数相同的二维数组中动态生成数字螺旋矩阵
如何在行列数相同的二维数组中动态生成数字螺旋矩阵?
我这里有一个基于@TheGeneral的C#代码改写的C++实现方案,核心思路是通过分层判断当前元素所在的行和列位置,计算出对应的基准值,进而推导螺旋矩阵中每个位置的数字:
#include <iostream> using namespace std; int main(){ int size = 10; int half = size/2; int matrix[size][size]; int number1 = 0; int number2 = 0; for(int i = 1; i<=size; i++){ for(int j = 1; j<= size; j++){ if(i > half){ number1 = size + 1 - i; }else{ number1 = i; } if(j > half){ number2 = size + 1 - j; } // 这里可以继续补全根据number1和number2计算当前矩阵元素值的逻辑 } } }
简单说下这个思路的核心:我们把方阵按层划分,half是矩阵的中间层分界。对于每一行i和每一列j,先判断它们处于上半部分还是下半部分(行)、左半部分还是右半部分(列),得到number1和number2这两个基准值,后续就可以基于这两个值计算出当前位置在螺旋中的对应数字。
内容的提问来源于stack exchange,提问作者joepa37
相关产品推荐
相关产品推荐

