从外层顺时针螺旋矩阵

打印出如图的顺时针螺旋矩阵

对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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值