(PAT乙級)1050 螺旋矩陣(C語言實現)

2021-08-26 15:12:18 字數 754 閱讀 1903

總結:1、兩個會卡住的思路難點:①n,m的值怎麼確定。②怎麼列印螺旋矩陣。

對於①:我本來的想法是找出n的所有約數,然後再在約數裡面找到差值最小對應的n,m。這樣步驟繁雜,又要先找約數,然後又要判斷最小值是哪兩個數的差。其實約數裡面是有對應的,比如:12的約數(1,2,3,4,6,12),其中1、12/3、4/2、6是成對出現的,所以只用對其中小於n的開根號的數進行是否是約數判斷即可。且從靠近n的開根號的點開始判斷,因為很明顯的知道,越中間的一對約陣列,差值越小,並不需要去做尋找最小值的操作。通過這樣的方式可以找到n,m。

對於②:掌握螺旋矩陣的規律——順時針寫出矩陣四個角的座標分別是:(0,0)→(0,n-1)→(m-1,n-1)→(m-1,0),找到座標變化的規律,(利用二維陣列)順時針列印螺旋矩陣,行的元素賦值從頭到尾都負責到底,而列的元素賦值從頭乙個都倒數第二個。

注意點:還有需要注意的是如何確定螺旋轉多少圈的問題,畫了4*3的矩陣和4*4的矩陣來幫助分析,他們都是轉兩圈雖然第二圈值轉到中途。即其實每轉一圈需要用掉兩列,如果是偶數列即為n/2求圈數便可,但如果是奇數列n/2還會剩下一列同樣要轉圈,所以應該是n/2+n%2,這樣在偶數的時候取餘不起作用,在奇數的時候又可以多加1圈。

2、輸出格式注意一下就好:注意換行注意空格。

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 取所有可能值中的最小值。輸入在第 1 行中給出乙個正整數 n,第 2 行給出 n 個待...

PAT乙 1050 螺旋矩陣 25

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