首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

二維矩陣順時針與逆時針螺旋打印算法:分層遍歷邊界條件控制

     編輯:關於C語言

二維矩陣順時針與逆時針螺旋打印算法:分層遍歷邊界條件控制

順時針螺旋填充/打印邏輯

以層數 n 為循環變量,每層四段:

  1. 向右:arr[n][n] → arr[n][col-1-n]
  2. 向下:arr[n+1][col-1-n] → arr[row-1-n][col-1-n]
  3. 向左:arr[row-1-n][col-2-n] → arr[row-1-n][n]
  4. 向上:arr[row-2-n][n] → arr[n+1][n]

層數 n = 0 .. min(row,col)/2 - 1。計數器 num 從 1 遞增至 row*col,滿則提前跳出。

完整代碼(順時針 5×4)

#define ROW 5
#define COL 4
int a[ROW][COL]={0}, n=0, val, num=1;
val = ROW0; val-=2, n++) {
    for (int i=n,j=n; i=n && num<=ROW*COL; i--,num++) a[i][j]=num;
    for (++i,--j; j>n && num<=ROW*COL; j--,num++) a[i][j]=num;
}
// 打印矩陣...

逆時針

同理,四段順序改為:向下 → 向右 → 向上 → 向左。核心邊界條件對稱調整即可。

關鍵點

  • 非方陣處理:層數由短邊決定,內層可能退化為單行/單列,靠 num <= ROW*COL 統一截斷。
  • 避免重複填寫角落元素:每段循環起止索引精確控制(如向左從 col-2-n 開始)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved