1160 蛇形矩陣

2022-05-03 08:36:07 字數 1330 閱讀 6775

第一部分:題目

題目描述 description

小明玩乙個數字遊戲,取個n行n列數字矩陣(其中n為不超過100的奇數),數字的填補方法為:在矩陣中心從1開始以逆時針方向繞行,逐圈擴大,直到n行n列填滿數字,請輸出該n行n列正方形矩陣以及其的對角線數字之和.

輸入描述 input description

n(即n行n列)

輸出描述 output description

n+1行,n行為組成的矩陣,最後一行為對角線數字之和

樣例輸入 sample input

樣例輸出 sample output

5 4 3

6 1 2

7 8 9

25第二部分:思路

思路:從中心位置開始,以逆時針方向「行走」,改變方向的條件是:當前位置的下一方向上沒有走過,利用初始化陣列為0,來判斷,如果為0說明沒有走過。

其次需要稍微注意的是:在計算對角線上數字和的時候,因為中心位置的數字加了兩次,所以要減去乙個中心位置數字,也就是1。

第三部分:**

#includeint

main()

,sum=0;//

dir表示方向,有1,2,3,4四個值,分別表示右、上、左,下

scanf("

%d",&n);

//中間位置

i=n/2

;j=i;

s[i][j]=sum++; //

sum 表示當前所要填寫的數字,中間位置肯定為1

//因為螺旋方向是逆時針,即:右->上->左->下,迴圈。

////

利用初始化為0,只要不為0說明走過了。

while(sum<=n*n)

break; }

case

2://

向上走

break; }

case

3://

向左走

break; }

default://

向下走

break; }

}} sum=0;//

左上角到右下角和

i=0;

while(i左下角到右上角和

i=n-1

;j=0

;while(i>=0)

//去掉一次對角線中相交處即中心數字。

sum-=s[n/2][n/2

];for(i=0;i)

printf(

"%d\n

",s[i][j]);

}printf(

"%d\n

",sum);

return0;

}

1160 蛇形矩陣

時間限制 1 s 空間限制 128000 kb 題目等級 silver 題解 小明玩乙個數字遊戲,取個n行n列數字矩陣 其中n為不超過100的奇數 數字的填補方法為 在矩陣中心從1開始以逆時針方向繞行,逐圈擴大,直到n行n列填滿數字,請輸出該n行n列正方形矩陣以及其的對角線數字之和.輸入描述 inp...

1160蛇形矩陣

解題思路 從最後乙個數n n,從右邊往左邊模擬,即n n存放在二維陣列a x y 裡,n n 1存放在a x y 1 直到y i i i,2,n 1 等於1,這個方向模擬完畢,類似的,再從下往上模擬,再從左往右模擬,再從上往下模擬,順時針模擬,直到n n i i 1,2,n n 1 等於1.其中要注...

1160 蛇形矩陣

題目描述 description 小明玩乙個數字遊戲,取個n行n列數字矩陣 其中n為不超過100的奇數 數字的填補方法為 在矩陣中心從1開始以逆時針方向繞行,逐圈擴大,直到n行n列填滿數字,請輸出該n行n列正方形矩陣以及其的對角線數字之和.輸入描述 input description n 即n行n列...