java实现Z字形扫描程序

  

本文实例为大家分享了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;   }      打破;   }      }         }         }   之前      

执行结果截图:

  

癹ava实现Z字形扫描程序"

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java实现Z字形扫描程序