java顺时针、逆时针打印矩阵
2017-11-30 14:29
351 查看
public class SnakeMatrix { /** * 定义矩阵的阶数 */ private int n; //填充矩阵的值 private int k = 1; private int[][] data; /** * 定义矩阵移动的方向 */ public enum Direction { left, right, up, down, } SnakeMatrix(int n) { this.n = n; data = new int ; } public void clockwisePrintMatrix() { //定义行数 int rowLen = data.length; //定义列数 int columnLen = data.length; //移动方向 Direction direction = Direction.right; //定义上边界 int upBound = 0; //定义下边界 int downBound = rowLen - 1; //定义左边界 int leftBound = 0; //定义右边界 int rightBound = columnLen - 1; //矩阵当前行数 int row = 0; //矩阵当前列数 int column = 0; while (true) { data[row][column] = k++; if (upBound == downBound && leftBound == rightBound) { // System.out.println(" upBound :"+upBound +" downBound :"+downBound+" leftBound :"+leftBound +" rightBound :"+rightBound); break; } switch (direction) { case right: if (column < rightBound) { ++column; } else { ++row; direction = Direction.down; ++upBound; } break; case down: if (row < downBound) { ++row; } else { --column; direction = Direction.left; --rightBound; } break; case up: if (row > upBound) { --row; } else { ++column; direction = Direction.right; ++leftBound; } break; case left: if (column > leftBound) { --column; } else { --row; direction = Direction.up; --downBound; } break; default: break; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.printf("%2d%s", data[i][j], " "); } System.out.println(); } 4000 } public void anticlockwisePrintMatrix() { int rowLen = data.length; int columnLen = data.length; int leftBound = 0; int rightBound = columnLen - 1; int upBound = 0; int downBound = rowLen - 1; int row = 0; int column = 0; Direction direction = Direction.down; while (true) { data[row][column] = k++; if (rightBound == leftBound && upBound == downBound) { break; } switch (direction) { case down: if (row < downBound) { row++; } else { column++; direction = Direction.right; leftBound++; } break; case right: if (column < rightBound) { column++; } else { row--; direction = Direction.up; downBound--; } break; case up: if (row > upBound) { row--; } else { direction = Direction.left; column--; rightBound--; } break; case left: if (column > leftBound) { column--; } else { direction = Direction.down; row++; upBound++; } break; default: break; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.printf("%2d%s", data[i][j], " "); } System.out.println(); } } }
首先呢上面是定义一个工具类,
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);int number = 5;SnakeMatrix snakeMatrix = new SnakeMatrix(number);snakeMatrix.anticlockwisePrintMatrix();//snakeMatrix.clockwisePrintMatrix();}}
直接进行使用,有两个方法,一个正序一个倒序
相关文章推荐
- java顺时针、逆时针打印矩阵
- java顺时针、逆时针打印矩阵
- Java 剑指offer_面试题20_顺时针打印矩阵(思路在一步步分解之中)
- 剑指offer--面试题20:顺时针打印矩阵--Java实现
- 顺时针打印矩阵java实现
- nowcoder-顺时针打印矩阵-模拟魔方逆时针旋转
- [遇见时光]剑指offer-顺时针打印矩阵java
- 【剑指offer-Java版】20顺时针打印矩阵
- 顺时针打印矩阵(Java实现)
- 【剑指offer——JAVA实现】顺时针打印矩阵(含思路解答示意图)
- java 顺时针打印矩阵
- 剑指Offer:面试题20——顺时针打印矩阵(java实现)
- 顺时针打印矩阵 (JAVA实现)
- LeetCode-54. Spiral Matrix (JAVA)(顺时针打印矩阵)
- java面试题:顺时针打印矩阵
- 顺时针和逆时针打印矩阵
- 顺时针打印矩阵 按圈打印 java
- JAVA实现顺时针打印矩阵问题(《剑指offer》)
- 剑指offer:顺时针打印矩阵(java)
- 剑指Offer:顺时针打印矩阵(JAVA)