hdu 1998 奇數階魔方(找規律 模擬)

2021-09-08 09:37:02 字數 950 閱讀 7215

應該不算太水吧。

17  24   1   8  15

23   5   7  14  16

4   6  13  20  22

10  12  19  21   3

11  18  25   2   9

對於上面的資料,根據題目中的提示,很容易就看到對角線上的數字是11、12、13、14、15。其他的資料,比如說2,從2往右上查就是2、3、4、5、1。描述起來好像很麻煩,但是對著圖看一下就可以很容易看明白。

接下來繼續觀察資料,我們可以看出在第一行實際上是從1開始往右查每個數字逐個加上n+2,往左先是n*n-1,然後依次減去n+2。第一行和最後一行根據中心點對稱的兩個數字的和是n*n+1,比如說17+9=25+1,24+2=25+1。

有了這兩個規律,僅憑直覺,我們都可以確定用來模擬出結果已經足夠了。模擬的方法很多,我的方法是將1~n^2分成n段,用第一行的每個數字來確定它所在的斜邊的最小值和最大值,比如說對於17,在16、17、18、19、20這個序列中,最小值就是17/5*5+1=16,最大值是(17+5)/5*5=20。有了這兩個值,這乙個序列的值就很容易確定了。

1a。

#include#include#define n 21

int map[n][n];

int main()

temp=1+n*n;

for(i=1; i<=n; i++)

map[n][i]=temp-map[1][n+1-i];

int start,end;

int l,k;

for(j=1; j0; l++,k--)

for(l=n-1,k=j+2; l>=1&&k<=n; l--,k++)

}for(l=2,k=n-1; l<=n&&k>=1; l++,k--)

for(i=1;i<=n;i++)

}return 0;

}

hdu 1998 奇數階魔方

hdu 1998 奇數階魔方 題意 給出奇數n,用右上法構造乙個n階魔方 思路 由題目給出的示例中可以知道,右上法構造方法如下 從第一行的中間數開始為1,然後這個位置的上一行右邊為這個數 1,如果新位置已被使用,則新位置改為舊位置的正下方 author licatweijie include inc...

HDU 1998 奇數階魔方

problem description 乙個 n 階方陣的元素是1,2,n 2,它的每行,每列和2條對角線上元素的和相等,這樣 的方陣叫魔方。n為奇數時我們有1種構造方法,叫做 右上方 例如下面給出n 3,5,7時 的魔方.3 8 1 6 3 5 7 4 9 2 5 17 24 1 8 15 23 ...

奇數階魔方 HDU 1998

乙個 n 階方陣的元素是1,2,n 2,它的每行,每列和2條對角線上元素的和相等,這樣 的方陣叫魔方。n為奇數時我們有1種構造方法,叫做 右上方 例如下面給出n 3,5,7時 的魔方.3 8 1 6 3 5 7 4 9 2 5 17 24 1 8 15 23 5 7 14 16 4 6 13 20 ...