洛谷P2239 螺旋矩陣

2022-04-12 01:02:56 字數 1007 閱讀 7719

題目鏈結

直接看題

一看就很數學

我們不妨來畫圖

畫出幾個矩陣,找他們的關係

然後發現

當i==1時,對應的值就是j所對應的值;

當i==n時,所對應的值就是3*n-2-j+1;

當j==1時,所對應的值是4*n-2-i;

當j==n時,對應的值是n+x-1。

然後對於這個很多很多層的矩陣,我們可以對其進行剝層,每剝開一層,n-2,所要求的點相對於新矩陣的行列座標分別-1,同時值+4*n-4;

這樣就是乙個遞迴

1 #include2

using

namespace

std;

3 inline int

read()

413 c=getchar();14}

15while(c>='

0'&&c<='9'

)1620return x*w;21}

22 inline void

out(int

n)23

29if(n>=10)30

33 putchar(n%10+'0'

);34

}35 inline int jyyakioi(int a,int b,int

c)36

41if(c==a)

4245

if(b==a)

4649

if(c==1)50

53return jyyakioi(a-2,b-1,c-1)+4*(a-1

);54

} 55

intmain()

56

至於jyyakioi,那已經是事實了qwq

洛谷 P2239 螺旋矩陣 數學

乙個nn行nn列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第11行第11列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中依次填入1,2,3,n1,2,3,n,便構成了乙個螺旋矩陣。2 下圖是乙個n 4n 4 時的螺...

洛谷 2239 螺旋矩陣

翻了翻題解,發現我的這個方法好像並沒有被寫過,也許是這個方法太菜了,但是還是可以ac的。首先呢 1 n 30,000.暴力就別想了,最多50分 於是就開始在暴力的基礎上找方法,無意發現,如果我們開始先將矩陣一層一層的剝開,直到目標位置在新矩陣的最外層是停止。此時最壞情況,目標點在30000x3000...

Luogu P2239 螺旋矩陣

乙個n行n列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第1行第1列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中依次填入1,2,3,n,便構成了乙個螺旋矩陣。現給出矩陣大小n以及i和j,請你求出該矩陣中第i行第j列...