遞迴法解決回式蛇形矩陣的輸出(C語言的實現)

2021-07-26 22:23:20 字數 954 閱讀 3293

蛇形矩陣有多種,今天說的是下面這種回形的蛇形矩陣。

如4x4的回形蛇形矩陣

如5x5的回形蛇形矩陣

通過分析發現,這種矩陣,在走一圈以後又變成乙個小2個的矩陣,如5x5的矩陣,從1、2、3。。。到14、15、16一圈後,變成了3x3的矩陣,因此可以使用遞迴的方式來解決這個問題。

1.走一圈需要4個迴圈

1)分別是向下走n次(nxn的矩陣)

2)向左走n-1次

3)向上走n-1次

4)向右走n-2次

2.如果n是奇數,如7,遞迴時分別是7-2=5,5-2=3,3-2=1,然後結束

如果n是偶數,如8,遞迴時分別是8-2=6,6-2=4,4-2=2,然後結束

因此分別需要寫出n=2、n=1時矩陣的輸出方法

3.通過以上分析,寫出以下蛇形矩陣的函式

//s:蛇形矩陣,start:矩陣開始值,n:nxn的蛇形矩陣,posi:開始的行號,posj:開始的列號

void matrix(int **s,int start,int n,int posi,int posj)

else if(n==2) //n=2時,有4個元素

else

{for(i=0;i

int main()

{ printf("請輸入nxn蛇形矩陣的數目n:\n");

int i,j,n;

int **s;

scanf("%d",&n);

s=(int **)malloc(n*sizeof(int *));

for(i=0;i

蛇形矩陣的一種解法(C語言)

錨定中心點 int i n 2 int j n 2 int k 0 int dir 4 a i j num num while num n n while flag feet feet 直到挪動到指定步數 k break case down flag feet 0 dowhile flag feet...

C語言輸出4 5的矩陣

解題思路 可以用迴圈的巢狀來處理此問題,用外迴圈來輸出一行資料,用內迴圈來輸出一列資料。要注意設法輸出矩陣的格式,即每輸出完5個資料後換行。源 演示 include 標頭檔案 intmain 主函式 printf d t i j 輸出數 return0 函式返回值為0 編譯執行結果如下 123 45...

C語言蛇形矩陣之崴腳的小北

如上,小北按照到達的順序形成了44的矩陣。現在給你乙個數字n,請你列印出這個小北走的nn步以後形成的矩陣。單組輸入 輸入乙個整數你,代表小北走了n n步 n 15 輸出乙個n行的矩陣。矩陣中同一行的數字用乙個空格分開。這裡為了方便觀察沒有按照這個要求輸出 1 2 9 4 3 8 5 6 7 如下 詳...