作为矩阵,当然可以用二维数组模拟。就像下面这样。
这是一个左上顺时旋转的螺旋矩阵,n代表a数组的行数,m代表a数组的列数。接下来是对x和y进行初始化。给他们赋的值代表从a数组第二行第二列开始将cnt的值赋给a数组。上面之所以将a数组的行数和列数设为n + 1 和 m + 1是因为x和y最开始的值是1。也就是从第二行第二列开始赋值,否则会发生数组越界。接下来,就要定义另一个存放移动距离和方向的数组了,也就是上图中的b数组。说到方向,还要定义一个影响移动方向的变量d。在while循环中,d的值在不断发生变化,当d的值到了3的时候,d的值就会重新变成0。这样就形成了循环,当d的值发生改变时,a数组内存放cnt的值的位置也会变化。这是因为螺旋矩阵依赖变量x和y来将cnt的值存放在a数组里,而x和y的变化取决于d的值以及b数组中的元素。d的值一变,x和y的加数也会变,系这样就改变了cnt的值在a数组内的移动方向和移动距离。
当螺旋矩阵形成后,就可以输出了,如果a数组内的一个地方不为零,那么就输出这里的元素,上图中我让他占三位。如果一个地方的值为零,那就在那个位置上输出占三位的空格。
双螺旋矩阵
上图程序会生成一个n行 n+1列的双螺旋矩阵。实现的思路是:由于数组元素合在一起看组成了一个长方