1160 蛇形矩陣 時間限制: 1 s 空間限制: 128000 KB 題目等級 : 白銀 Silver
題解 查看運行結果
題目描述 Description 小明玩一個數字游戲,取個n行n列數字矩陣(其中n為不超過100的奇數),數字的填補方法為:在矩陣中心從1開始以逆時針方向繞行,逐圈擴大,直到n行n列填滿數字,請輸出該n行n列正方形矩陣以及其的對角線數字之和.
輸入描述 Input Description n(即n行n列)
輸出描述 Output Description n+1行,n行為組成的矩陣,最后一行為對角線數字之和
樣例輸入 Sample Input 3
樣例輸出 Sample Output 5 4 3 6 1 2 7 8 9 25
數據范圍及提示 Data Size & Hint
思路: 具體看代碼注釋,比較容易可以看出規律
#include<stdio.h>#include<string.h>int arr[101][101];int main(){ int n; scanf("%d",&n); int mid = (1+n)/2; int c = 1; arr[mid][mid]=c++; int i = mid,j = mid;//從中心開始執行 for(int k = 1;k<=n/2;k++){//這里表示執行幾次循環圈 j++;//此處向右走一步,表示開始執行循環圈 arr[i][j] = c++; //向上 while(i!=mid-k||j!=mid+k){ i--; arr[i][j]=c++; } //向左 while(i!=mid-k||j!=mid-k){ j--; arr[i][j] = c++; } //向下 while(i!=mid+k||j!=mid-k){ i++; arr[i][j] = c++; } //向右 while(i!=mid+k||j!=mid+k){ j++; arr[i][j] = c++; } } for(int i = 1;i<=n;i++){ for(int j = 1;j<=n;j++){ if(j!=n)新聞熱點
疑難解答