关于矩阵斜方向遍历的问题

  对于矩阵的遍历的斜方向上的遍历,在动态规划中使用非常普遍,现将矩阵斜方向上的遍历方式总结如下:

  主要思想:使用双重循环  内部的for循环1-n,代表对斜方向中心线的n个数字进行遍历,外部for循环表示步长,也就是在中心线的基础上进行当前的步长的 加和减,如图:

  

  

 1 int[][] vec = new int[][]{{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};
 2 
 3         //左下-右上方向 从中间开始 向右下方遍历
 4         //i 代表的是步长 j代表是中间的斜轴
 5         for(int i = 0;i < vec.length;i++){
 6             for(int j = 0;j < vec.length;j++){
 7                 if(j+i >= vec.length) break;
 8                 System.out.print(vec[j][j+i] + " ");
 9             }
10             System.out.println();
11         }
12 
13         //左下-右上方向 从右上方开始 向中间遍历
14         //i 代表的是步长 j代表是中间的斜轴
15         for(int i = vec.length - 1;i >=0 ;i--){
16             for(int j = 0;j < vec.length ;j++){
17                 if(j+i >= vec.length) break;
18                 System.out.print(vec[j][j+i] + " ");
19             }
20             System.out.println();
21         }
22 
23         //左下-右上方向 从中间开始 向左下方遍历
24         //i 代表的是步长 j代表是中间的斜轴
25         for(int i = 0;i < vec.length ;i++){
26             for(int j = 0;j < vec.length ;j++){
27                 if(j-i < 0) continue;
28                 System.out.print(vec[j][j-i] + " ");
29             }
30             System.out.println();
31         }
32 
33         //左下-右上方向 从左下方开始 向中间白能力
34         //i 代表的是步长 j代表是中间的斜轴
35         for(int i = vec.length - 1;i >= 0 ;i--){
36             for(int j = 0;j < vec.length ;j++){
37                 if(j-i < 0) continue;
38                 System.out.print(vec[j][j-i] + " ");
39             }
40             System.out.println();
41         }

 

posted @ 2019-10-15 21:48  十指决  阅读(1766)  评论(0编辑  收藏  举报