您的位置:首页 > 编程语言 > Java开发

(java)蛇形矩阵(递归实现)

2016-04-09 09:55 281 查看
蛇形矩阵题意描述如下:

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,

Given n = 
3
,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

再比如:n=4
[

[1,2,3,4]

[12,13,14,5]

[11,16,15,6]

[10,9,8,7]

]

代码如下:

public class Solution {
public int[][] generateMatrix(int n) {
int[][] num=new int

;
if(n<=0){
return num;
}
OK(num,1,0,n-1,0,n-1);
return num;
}
public void OK(int[][] n,int num,int minrow,int maxrow,int mincol,int maxcol){
if(minrow>maxrow && mincol>maxcol){
return ;
}
for(int i=mincol;i<=maxcol;i++){
n[minrow][i]=num;
num++;
}
num--;//相同的位置,不能加两次
for(int i=minrow;i<=maxrow;i++){
n[i][maxcol]=num;
num++;
}
num--;
for(int i=maxcol;i>=mincol;i--){
n[maxrow][i]=num;
num++;
}
num--;
for(int i=maxrow;i>minrow;i--){
n[i][mincol]=num;
num++;
}
OK(n,num,++minrow,--maxrow,++mincol,--maxcol);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 算法 编程 递归