列印螺旋矩陣

2021-06-02 15:58:20 字數 1232 閱讀 5644

首先,看一下螺旋矩陣的樣子.如下圖:

求螺旋陣列的**如下(dev-cpp平台):

#include using namespace std;

int** alloc_mat(int round); //動態二維陣列的分配

void del_mat(int **mat, int round); //刪除動態分配的二維陣列

void print_mat(int **mat, int round); //列印二維陣列

void fill_mat(int **mat, int round); //填充陣列為螺旋陣列

int main()

while (round <= 0);

spiral_mat = alloc_mat(round);

fill_mat(spiral_mat,round);

print_mat(spiral_mat, round);

del_mat(spiral_mat, round);

system("pause");

return 0;

}int** alloc_mat(int round)

for (i = 0; i < dim; i++)

for (j = 0; j < dim; j++)

mat[i][j] = 0;

return mat;

}void del_mat(int **mat, int round)

void print_mat(int **mat, int round)

cout << endl;

}void fill_mat(int **mat, int round)

}

我們還可以進一步把fill_mat函式進行優化. 上面fill_mat函式是採取一層一層賦值,然後一層裡再沿順時針方向,取一圈為4條邊, 即一條邊一條邊賦值.

我們可以直接一圈圈賦值.參考下面fill_mat2函式.

void fill_mat2(int **mat, int round)

val += 4 * 2 * r;

r++;

} }

如果矩陣是由外往內螺旋,如下圖.

那麼如何實現呢? 其實也不難, **如下:

void fill_mat(int **mat, int mat_size)

}

列印螺旋矩陣

螺旋矩陣是乙個nxn的方陣,其中元素為自然數,但像螺旋方向一樣遞增。舉例如下 若n 3,螺旋矩陣為 1 2 3 8 9 4 7 6 5若n 4,螺旋矩陣為 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7若n 5,螺旋矩陣是 1 2 3 4 5 16 17 18 19 6...

列印螺旋矩陣(遞迴解法)

求職過程遇到的一道面試題,當時沒有做出來,回來想出幾種方法,其中大多是 蠻力 解法,不得不陷入一堆的i j 迴圈之中。最後想出一種遞迴解法,現記錄如下。題目如下 輸入 n,列印 n n 螺旋矩陣 比如 n 3 列印 1 2 3 8 9 4 7 6 5 n 4 列印 1 2 3 4 12 13 14 ...

列印螺旋矩陣(遞迴解法)

求職過程遇到的一道面試題,當時沒有做出來,回來想出幾種方法,其中大多是 蠻力 解法,不得不陷入一堆的i j 迴圈之中。最後想出一種遞迴解法,現記錄如下。題目如下 輸入n,列印 n n 螺旋矩陣 比如 n 3,列印 1 2 3 8 9 4 7 6 5 n 4,列印 1 2 3 4 12 13 14 5...