第一部分:題目
題目描述 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。
第三部分:**
#includeintmain()
,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列...