当前位置:首页 > 开发 > 编程语言 > Java > 正文

java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

发表于: 2012-02-10   作者:bylijinnan   来源:转载   浏览:
摘要: public class PrintMatrixClockwisely { /** * Q51.输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9

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-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
顺时针打印出1到一个数的平方矩阵,假如数为3,则3的平方为9,要打印的矩阵为: 1 2 3 8 9 4 7 6 5
Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日期:20
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日
效果图如上 代码如下 import java.util.*; class Yanghui { public static void main(String[] args
题目:输入一个矩阵,按照从外向里以顺时针一次打印出每一个数字。例如 输入: 1 2 3 4 5 6 7 8 9 1
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩
打印方法: 我们采用计数的方式进行打印,如第一次打印,第二次打印,第。。。。。。。 我们知道,
from:http://blog.csdn.net/zhoujunbuaa/article/details/6121375 题目:输入一个矩阵,按照从外向
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵:
难点: 边界条件判断有点复杂,可以画一个图形帮组我们思考。 代码如下: //参数:数组名,列数,行
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号