//转圈打印矩阵
public class CirclePrintMatrix{
//(1)矩阵分圈处理
public static void CirclePrintMatrix01(int[][]matrix)
{
int tR=0;
int tC=0;
int dR=matrix.length-1;
int dC=matrix[0].length-1;
while(tR<=dR&&tC<=dC)
{
//缩小一个圈
PrintEdgeCircle(matrix,tR++,tC++,dR--,dC--);
}
System.out.println();
}
//打印子矩阵的外圈
public static void PrintEdgeCircle(int[][]m,int tR,int tC,int dR,int dC)
{
if(tR==dR)//子矩阵只有一行时
{
for(int i=tC;i<=dC;i++)
{
System.out.print(m[tR][i]+" ");
}
}else if(tC==dC) //子矩阵只有一列时
{
for(int i=tR;i<=dR;i++)
{
System.out.print(m[i][tC]+" ");
}
}else{ //普遍的情况
int curtC=tC;
int curtR=tR;//记录左上角的节点
while(curtC!=dC)
{
System.out.print(m[tR][curtC]+" ");
curtC++;
}
while(curtR!=dR)
{
System.out.print(m[curtR][dC]+" ");
curtR++;
}
while(curtC!=tC)
{
System.out.print(m[dR][curtC]+" ");
curtC--;
}
while(curtR!=tR)
{
System.out.print(m[curtR][tC]+" ");
curtR--;
}
}
}
public static void main(String[]args)
{
int[][]matrix={{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
//只有一列
int[][]matrix02={{1},{2},{3},{4}
};
//只有一行
int[][]matrix03={{1,2,3,4}
};
//转圈打印矩阵
CirclePrintMatrix01(matrix);
CirclePrintMatrix01(matrix02);
CirclePrintMatrix01(matrix03);
}
}
转圈打印矩阵
最新推荐文章于 2019-08-17 11:05:25 发布