本文实例为大家分享了java之字形打印矩阵的具体代码,供大家参考,具体内容如下
给定一个n×n的矩阵,输出对这个矩阵进行Z字形扫描的结果。
<强>输入格式:强>
输入的第一行包含整数N和M,表示N×M的矩阵。
输入包含n×n个整数,由空格分隔,表示输入的矩阵储存的数字。
<强>输出格式:强>
输出一行矩阵经过Z字形扫描后的结果。
<强>测试用例:强>
3 3,
引用>
,1 2 6
,3 5 7
,4 8 9<强>程序分析强>
扫描路线像是一个Z字形,每扫描到一个位置,就输出该位置的内容。
假设扫描的过程,是一个人在一个有边界的小岛里行走,那么描述其行走路线:1,首先第一步,是向下走一步;
2,每次向下走一步后,判定右边是否为尽头,如果不是尽头,则往右上方向一直前进直到尽头;
3,当右上方向走到尽头后,判定右边是否为尽头,如果不是尽头,则往右走(步骤3),否则,往下走(步骤2);
4,每次向右走一步后,判定下边是否为尽头,如果不是尽头,则往左下方向一直前进直到尽头;
5,当左下方向走到尽头后,判定左边是否为尽头,如果不是尽头,则往右走(步骤3),否则,往下走(步骤2);
以上便是Z字形扫描的执行过程,上面所说的“尽头”代表的是矩形的边界。
以下为代码实现:进口java.util.Scanner; 公开课主要{//方向枚举 enum方向{ 下来,RIGHT_UP, LEFT_DOWN } 公共静态void main (String [] args) {//TODO自动生成方法存根 整数N, M; int [] []; 扫描仪扫描=new扫描仪(系统); N=scan.nextInt (); M=scan.nextInt (); 一个=new int [N] [M]; for (int i=0;我& lt;N;我+ +){ for (int j=0;j & lt;M;j + +) { [我][j]=scan.nextInt (); } } int行=0,坳=0; 方向dir=Direction.DOWN; system . out。打印((行)(col) + " "); 而(!(行==N - 1,,坳==M - 1)) { 开关(dir) { 例://向下走 如果行& lt;N - 1) { 行+ +; system . out。打印((行)(col) + " "); 如果(col !=M - 1) { dir=Direction.RIGHT_UP; 其他}{ dir=Direction.LEFT_DOWN; } 其他}{ dir=Direction.RIGHT; } 打破; 案例RIGHT_UP://向右上方向走 而(行比;0,,坳& lt;M - 1) { 行,; 坳+ +; system . out。打印((行)(col) + " "); } 如果(行!=0){ dir=Direction.DOWN; 其他}{ dir=Direction.RIGHT; } 打破; 案例://向右走 如果(col & lt;M - 1) { 坳+ +; system . out。打印((行)(col) + " "); 如果(行!=N - 1) { dir=Direction.LEFT_DOWN; 其他}{ dir=Direction.RIGHT_UP; } 其他}{ dir=Direction.DOWN; } 打破; 案例LEFT_DOWN://向左下方向走 而(坳比;0,,行& lt;N - 1) { 行+ +; ——上校; system . out。打印((行)(col) + " "); } 如果(col !=0) { dir=Direction.DOWN; 其他}{ dir=Direction.RIGHT; } 打破; } } } } >之前执行结果截图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
java实现Z字形扫描程序