打印出如图的顺时针螺旋矩阵
对n * n 矩阵,最先访问最外层的 n* n的矩形上的元素,接着再访问里面一层的 (n - 2) * (n - 2) 矩形上的元素…… 最后可能会剩下一些元素,组成一个点或一条线
对第i(0,1,2......n/2)个矩形,4个顶点的坐标分别为:
(i, i) ----------------------------------------- (i, n–1-i)
| |
| |
| |
(n-1-i, i) ----------------------------------------- (n-1-i, n-1-i)
public static void main(String[] args) {
int n=6,i,j,num=1;
int[][] a=new int[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
for(i=0;i<n/2;i++)
{
for(j=i;j<n-i;j++)
if(a[i][j]==0)
a[i][j]=num++;
for(j=i+1;j<n-i;j++)
if(a[j][n-i-1]==0)
a[j][n-i-1]=num++;
for(j=n-i-1;j>i;j--)
if(a[n-i-1][j]==0)
a[n-i-1][j]=num++;
for(j=n-i-1;j>i;j--)
if(a[j][i]==0)
a[j][i]=num++;
if(n%2==1)
a[n/2][n/2]=num;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
System.out.print(a[i][j]+" ");
System.out.println();
}
}
最外面一层大for语句用于控制矩阵的层数
1.第一个for语句是打印红线方向的数字
2.第二个for语句是打印蓝线方向的数字
3.第三个for语句是打印黑线方向的数字
4.第四个for语句是打印黄线方向的数字
本文参考http://www.cnblogs.com/flyinghearts/archive/2010/12/23/1915329.html