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 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9 7
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
第1行中間的數總是1,最後1行中間的數是n^2,他的右邊是2,從這三個魔方,你可看出「右
上方」是何意。
input
包含多組資料,首先輸入t,表示有t組資料.每組資料1行給出n(3<=n<=19)是奇數。
output
對於每組資料,輸出n階魔方,每個數占4格,右對齊
sample input
235
sample output
8 1 63 5 7
4 9 2
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
**:#include#includeint a[20][20];
int n,vis[20][20];
void dfs(int x,int y)
vis[x][y]=1;
if(a[x][y]!=n*n&&a[x-1][y+1]==0&&x-1>=1&&y+1<=n)
if(x==1&&a[n][y+1]==0&&y+1<=n)
if(y==n&&a[x-1][1]==0&&x-1>=1)
if(a[x][y]==n&&a[x+1][y]==0)
if(a[x-1][y+1]!=0&&a[x+1][y]==0&&a[x-1][y+1]分幾種情況,右上角的數是右下角+1,然後對第一排,最後一排,還有特殊的位置 比如n*n,1的位置進行不同的運算。(假如是第一排 那這個數的右上角就是x=n,y+1)
然後分別對運算後的數在進行dfs。輸出的時候靠右 這就要判斷是幾位數 直接判斷大於等於10 或者大於等於100就行 大於等於十就輸出倆空格!
奇數階魔方 1998
problem description 乙個 n 階方陣的元素是1,2,n 2,它的每行,每列和2條對角線上元素的和相等,這樣 的方陣叫魔方。n為奇數時我們有1種構造方法,叫做 右上方 例如下面給出n 3,5,7時 的魔方.38 1 6 3 5 7 4 9 2 517 24 1 8 15 23 5 ...
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 ...