螺旋矩陣
下面是一個5×5的螺旋方陣,試程式設計列印出此形式的n×n(n<10)階的方陣。
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
此題的關鍵在於如何有效控制填充數的位置,從題中可以發現,填充數是按著“先向右,再向下,再向左,再向上”的順序進行變化的,不妨將其稱為方向。如果方向知道了,則下一個需要填充的位置也就知道了。因此,這個題的關鍵在於有效控制方向。方向的變化也需要根據填充數的位置進行,並應該與已經填充的數字避免衝突。因此,可以首先將陣列中所有位置賦初值0,隨著填充的進行,如果數不為0,則說明這個位置已經填上數字,因此方向應該發生改變。
參考程式碼如下:
#include <stdio.h>
#define N 5
int main()
{
int a[N][N]={0};
int direction=1;
int i,j;
int x,y;
x=0;y=0; //initial position
for(i=1;i<=N*N;i++)
{
a[x][y]=i;
switch(direction)
{
case 1: if(a[x][y+1]||y==N-1)
direction=2;
break;
case 2: if(a[x+1][y]||x==N-1)
direction=3;
break;
case 3: if(a[x][y-1]||y==0)
direction=4;
break;
case 4: if(a[x-1][y]||x==0)
direction=1;
break;
}
switch(direction){
case 1: y++; break;
case 2: x++; break;
case 3: y--; break;
case 4: x--; break;
}
}
for(i=0;i<N;i++){
for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
相關文章
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 54. 螺旋矩陣矩陣
- c# 螺旋矩陣C#矩陣
- 力扣-54. 螺旋矩陣力扣矩陣
- [Leetcode]59.螺旋矩陣ⅡLeetCode矩陣
- 演算法學習之路|螺旋矩陣演算法矩陣
- C語言實現矩陣螺旋輸出C語言矩陣
- 富有敗筆的B1050 螺旋矩陣 (25分)矩陣
- LeetCode 59. 螺旋矩陣 II(python、c++)LeetCode矩陣PythonC++
- 資料結構與演算法---螺旋矩陣、整數反轉資料結構演算法矩陣
- LeetCodeHot100 73. 矩陣置零 54. 螺旋矩陣 48. 旋轉影像 240. 搜尋二維矩陣 IILeetCode矩陣
- 【leetcode】每日精選題詳解之59. 螺旋矩陣 IILeetCode矩陣
- 程式碼隨想錄演算法訓練營第二天 | 陣列 59.螺旋矩陣演算法陣列矩陣
- 鄰接矩陣、度矩陣矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 矩陣矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 3D圖形:矩陣的行列式,矩陣的逆、正交矩陣、齊次矩陣3D矩陣
- 矩陣中最大的二維矩陣矩陣
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 矩陣和陣列矩陣陣列
- 1,2,3…n*n 的數字按照順時針螺旋的形式列印成矩陣(遞迴)矩陣遞迴
- 理解矩陣矩陣
- 矩陣相乘矩陣
- 矩陣分解矩陣
- 稀疏矩陣矩陣
- Numpy 矩陣矩陣
- 穿越矩陣矩陣
- 混淆矩陣矩陣
- 魔方矩陣矩陣
- 矩陣乘法矩陣
- 快手矩陣管理平臺,矩陣管理有方法矩陣
- Wannafly模擬賽 矩陣 二維矩陣hash矩陣
- 經典題目螺旋方陣的詳解
- 矩陣:如何使用矩陣操作進行 PageRank 計算?矩陣
- 視訊矩陣矩陣
- 高斯消除矩陣矩陣
- 矩陣轉置矩陣