通常,我们遇到的螺旋矩阵,都是方阵,即矩阵的行数和列数相等(n * n)。但当遇到非方阵(即行数和列数不相等的矩阵)时,数据其实也是可以实现螺旋排列的。
通过摸索,试分析如下:
1.若需实现数据在矩阵内螺旋排列,则矩阵的行数和列数至少不小于2,即排除行矩阵和列矩阵;
2.取得矩阵行列数后,令生成指定行列的二维数组;
3.通过for循环嵌套,外for循环实现一”圈“数据排列,内for循环实现一圈内四个方向数据赋值。外循环的循环次数,与列数有关;
4.因测试发现在3列、5列、7列等奇数列时,易出现最后一个向上方向的数据重复覆盖。故在最后一个内循环加上条件语句,测试是否已经赋过值(这应该是本人在算法上的不到之处,望大侠指导更好的算法);
试贴代码如下:
import java.util.Scanner;
public class Luoxuan{
public static void main(String[] args) {
int value,row=0,col=0;
boolean okorno=false;
Scanner input = new Scanner(System.in);
Pand pd = new Pand();
// 输入行数,可退出;验证是否符合
do {
System.out.println("请输入螺旋矩阵的行数:");
value=input.nextInt();
okorno=pd.hs((int)value)