1. 程式人生 > 實用技巧 >1050 螺旋矩陣 (25分)

1050 螺旋矩陣 (25分)

題目

本題要求將給定的 N 個正整數按非遞增的順序,填入“螺旋矩陣”。所謂“螺旋矩陣”,是指從左上角第 1 個格子開始,按順時針螺旋方向填充。要求矩陣的規模為 m 行 n 列,滿足條件:m×n 等於 N;m≥n;且 m−n 取所有可能值中的最小值

輸入格式

輸入在第 1 行中給出一個正整數 N,第 2 行給出 N 個待填充的正整數。所有數字不超過 10^4,相鄰數字以空格分隔。
輸出格式

輸出螺旋矩陣。每行 n 個數字,共 m 行。相鄰數字以 1 個空格分隔,行末不得有多餘空格。

輸入樣例:

12
37 76 20 98 76 42 53 95 60 81 58 93

輸出樣例:

98 95 93
42 37 81
53 20 76
58 60 76

解析

  先求出螺旋矩陣的行數和列數m,n,然後從最外圈左上角第一個開始順時針填充,填充的圈數 = m/2 + 0.5(行數/2的四捨五入)
  輸入資料儲存在a,排序以後一圈一圈填進re,難點就在填充的時候for迴圈的起點終點和臨界情況的處理
  填一圈需要四個for來填填4條邊,起點終點受圈數影響,注意到寫出來就是時間問題了,相信你