關於矩陣斜方向遍歷的問題


  對於矩陣的遍歷的斜方向上的遍歷,在動態規划中使用非常普遍,現將矩陣斜方向上的遍歷方式總結如下:

  主要思想:使用雙重循環  內部的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         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM