算法:螺旋矩阵的实现
01 02 09 10 25 26
04 03 08 11 24 27
05 06 07 12 23 28
16 15 14 13 22 29
17 18 19 20 21 30
36 35 34 33 32 31
算法实现如下:
package algorithm;
public class LinerMatrix {
/**
* @author buptkongxiangqi@gmail.com
* @param args
*/
public static int[][] creatematrix(int dis) {
int[][] matrix;
if (dis == 1) {
matrix = new int[1][1];
matrix[0][0] = 1;
return matrix;
} else {
matrix = new int[dis][dis];
// num表示需要赋的值
int num = 1;
matrix[0][0] = num;
// i代表当前矩阵维数-1,其实也就是当前最大下标啦
for (int i = 1; i < dis; i++) {
// 如果当前矩阵为偶数的,则顺时针赋值
if ((i + 1) % 2 == 0) {
for (int k = 0; k <= i; k++) {
num++;
System.out.println(k + " " + i + "=" + num);
matrix[k][i] = num;
}
for (int l = (i - 1); l >= 0; l--) {
num++;
matrix[i][l] = num;
}
} else {
// 当前矩阵为奇数则顺时针赋值
for (int k = 0; k <= i; k++) {
num++;
matrix[i][k] = num;
}
for (int l = i - 1; l >= 0; l--) {
num++;
matrix[l][i] = num;
}
}
}
return matrix;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 6;
int[][] matrix = creatematrix(n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
String numstr = Integer.toString(matrix[i][j]);
if (matrix[i][j] < 10)
numstr = "0" + numstr;
System.out.print(numstr + " ");
}
System.out.println("");
}
}
}
结果在最上边啦
335

被折叠的 条评论
为什么被折叠?



