【蓝桥杯】Z形打印二维数组

题目描述:

示例:

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

 

 

 

 

 

输出:

1  2  5  9  6  3  4  7  10  13  14  11  8  12  15  16 

分析:

看作是在走斜线,从做向右走(上坡)和从右向左走(下坡)。

边界处理:

如果是从左向右走l2r=true,走上坡,先打印该位置的元素,在判断下一步怎末走:

  1.该位置r(row)=0,且c(col)没有到达边界,只能向右走(比如说:1->2);

  2.该位置c到达边界,且r没有到达边界,只能向下走(比如说:8->12);

  3.其余情况都是顺畅的向右上↗走,r--;c++;

否则,l2r=false,走下坡,先打印该位置元素,在判断下一步怎末走:

  1.该位置c=0,且r没有到达边界,只能向下走(比如说:5->9);

  2.该位置r到边界,只能向右走(比如说:10->11);

  3.其余情况顺畅的想左下↙走,c--;r++;

代码如下:

 1 public class case3 {
 2 
 3     public static void main(String[] args) {
 4 
 5         int arr[][] = { 
 6                 { 1, 2, 3, 4 }, 
 7                 { 5, 6, 7, 8 }, 
 8                 { 9, 10, 11, 12 },
 9                 { 13, 14, 15, 16 } 
10                 };
11         printZ(arr);
12 
13     }
14     static void printZ(int[][] matrix) {
15         int r = 0, m = matrix.length;
16         int c = 0, n = matrix[0].length;
17         boolean l2r = true;// 为真从左到右;
18 
19         while (r < m && c < n) {
20             if (l2r) {// 从左向右
21                 System.out.print(matrix[r][c] + "  ");
22                 if (r == 0 && c < n - 1) {// 只能向右走;
23                     l2r = !l2r;
24                     c++;
25                     continue;
26                 } else if (c == n - 1 && r > 0) {// 只能向下走;
27                     l2r = !l2r;
28                     r++;
29                     continue;
30                 } else {
31                     r--;
32                     c++;
33                 }
34 
35             } else {// 从右向左走
36                 System.out.print(matrix[r][c] + "  ");
37                 if (c == 0 && r < m - 1) {// 只能向下走;
38                     l2r = !l2r;
39                     r++;
40                     continue;
41                 } else if (r == m - 1) {// && c < n - 1
42                     l2r = !l2r;
43                     c++;
44                     continue;
45                 } else {
46                     c--;
47                     r++;
48                 }
49             }
50 
51         }
52 
53     }
54 }

持续更新中……

 

posted on 2020-07-22 21:40  丁不煮  阅读(445)  评论(0)    收藏  举报

导航