本文实例讲述了Java实现输出回环数(螺旋矩阵)的方法。分享给大家供大家参考,具体如下:
以前见过,没做出来;那天论坛再见,灵感来了,太神奇了
复杂度好像为 o(n)
保存下来
package demo;
public class snakeMatrixDemo {
public static void main(String[] args) {
int m = 5;
int n = 5;
int[][] pos = new int[m][n];
int count = 0;
int r = 0, c = 0;
final int up = 1;
final int down = -1;
final int left = 2;
final int right = -2;
int dir = right;
int cir = 1;
while (count < m * n) {
count++;
pos[r][c] = count;
switch (dir) {
case right:
if (c < n - cir) {
c++;
} else {
dir = down;
r++;
}
break;
case down:
if (r < m - cir) {
r++;
} else {
dir = left;
c--;
}
break;
case left:
if (c > cir - 1) {
c--;
} else {
dir = up;
r--;
}
break;
case up:
if (r > cir) {
r--;
} else {
cir++;
dir = right;
c++;
}
break;
}
}
System.out.println("考高分网测试结果:");
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (pos[i][j] < 10) {
System.out.print(pos[i][j] + " " + " ");
} else {
System.out.print(pos[i][j] + " ");
}
}
System.out.println();
}
}
}
运行结果:
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。



