本題需要解決兩個問題:①得到螺旋矩陣的寬col和高row②輸出矩陣
對於問題①,由於高度》=寬度,固將高度設定成row=(int)ceil(sqrt(n*1.0));然後不斷row++,直到n%row==0。其中ceil向上取整
對於問題②,先將輸出的內容列印在二維陣列中,然後輸出二維陣列即可。其中列印二維陣列的方式為一圈一圈列印,具體見**。
#include
using
namespace std;
const
int n=
10010
;int arr[n]
,ans[n]
[n];
bool
cmp(
int a,
int b)
intmain()
int col=n/row,i=
1,j=
1,now=0;
int u=
1,d=row,l=
1,r=col;
while
(now
while
(now
while
(nowl)
while
(nowu)
u++,d--
,l++
,r--
; i++
,j++
;//列印完一圈,進入裡面一圈
}for
(int i=
1;i<=row;i++
)printf
("\n");
}return0;
}
1050 螺旋矩陣 25
測試點2與6沒過 主要的點是 1 求得m與n,這個我是從1到一直到數的一半試的 2 構造螺旋矩陣,使用的是一圈一圈的方法,就是先把最外面的一圈填上,然後再填裡面的一圈,對於最後可能剩下的單獨一列,則是使用的列表是否為空來判斷,因為我把排好序的元素從列表中乙個個的彈出,然後放到矩陣中。未完待續。imp...
1050 螺旋矩陣 25
1050.螺旋矩陣 25 本題要求將給定的n個正整數按非遞增的順序,填入 螺旋矩陣 所謂 螺旋矩陣 是指從左上角第1個格仔開始,按順時針螺旋方向填充。要求矩陣的規模為m行n列,滿足條件 m n等於n m n 且m n取所有可能值中的最小值。輸入格式 輸入在第1行中給出乙個正整數n,第2行給出n個待填...
PTA 1050 螺旋矩陣
include include include include includeusing namespace std bool cmp int a,int b int main cout a m,vector n int count 1 int k 0 int t 0,i,j int c m 2 m...