PAT乙級 1050 螺旋矩陣 25分

2021-10-09 20:23:05 字數 936 閱讀 2282

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

輸入在第 1 行中給出乙個正整數 n,第 2 行給出 n 個待填充的正整數。所有數字不超過 104,相鄰數字以空格分隔。

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

12

3776

2098

7642

5395

6081

5893

98

9593

4237

8153

2076

5860

76

思路:可能會有人猶豫n是偶數還是奇數,因為題中也沒規定n是偶是奇,但是博主個人覺得它應該是偶數的,不然弄不成矩陣啊,輸入資料之後找到n和m,這個比較好找,關鍵就是螺旋矩陣的問題,這個有點麻煩,其實這種題做的次數多了也就那樣了,所以問題不大,螺旋矩陣的規定方式有很多種,大家按自己喜歡的來。

#include

#include

#include

using

namespace std;

bool

cmp(

int a,

int b)

intmain()

int b[m]

[n],p,q,r,s,cnt=0;

//製作螺旋矩陣

for(

int i=

0;i)//輸出

for(

int i=

0;i) cout <}return0;

}

PAT乙級1050 螺旋矩陣 25分

本題要求將給定的 n 個正整數按非遞增的順序,填入 螺旋矩陣 所謂 螺旋矩陣 是指從左上角第 1 個格仔開始,按順時針螺旋方向填充。要求矩陣的規模為 m 行 n 列,滿足條件 m n 等於 n m n 且 m n 取所有可能值中的最小值。輸入格式 輸入在第 1 行中給出乙個正整數 n,第 2 行給出...

PAT乙 1050 螺旋矩陣 25

題目描述 本題要求將給定的n個正整數按非遞增的順序,填入 螺旋矩陣 所謂 螺旋矩陣 是指從左上角第1個格仔開始,按順時針螺旋方向填充。要求矩陣的規模為m行n列,滿足條件 m n等於n m n 且m n取所有可能值中的最小值。程式 include include include using names...

PAT 1050 螺旋矩陣 25 分

題目傳送門 戳這 如圖所示 我們將填寫順序分解為一圈一圈 level 而每乙個level 又分為4個部分 根據n的不同,最後乙個level不一定有4個部分,但是不影響 分別對應於相同顏色的4個箭頭。1.如何求level 圈數 多畫幾個圖會發現,圈數和 短的 緊密相關,也就是和 lie 相關 不妨花點...