概述
- public class PrintMatrixClockwisely {
- /**
- * Q51.输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
- 例如:如果输入如下矩阵:
- 1 2 3 4
- 5 6 7 8
- 9 10 11 12
- 13 14 15 16
- 则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。
- */
- public enum Direction{
- left,right,up,down,
- }
- public static void main(String[] args) {
- int[][] matrix= {
- { 1, 2, 3, 4, 5},
- { 6, 7, 8, 9,10},
- {11,12,13,14,15},
- {16,17,18,19,20},
- {21,22,23,24,25},
- };
- printMatrixClockwisely(matrix);
- }
- /*
- * 思路比较直观,
- * 从左往右打印,到了右边界则向下,到了下边界就往左,到了左边界就往上。
- * 注意结束条件以及打印的时机
- */
- public static void printMatrixClockwisely(int[][] matrix){
- int rowLen=matrix.length;
- int columnLen=matrix[0].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){
- System.out.print(matrix[row][column]+" ");
- //2 3 4 5 10 15 20 25 24 23 22 21 16 11 6 7 8 9 14 19 18 17 12 13
- if(upBound==downBound&&leftBound==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;
- }
- }
- }
- }
最后
以上就是玩命果汁为你收集整理的java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。的全部内容,希望文章能够帮你解决java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复