百練 神奇的幻方(二維陣列水題)

2021-08-07 10:32:30 字數 857 閱讀 7066

總時間限制: 

1000ms 

記憶體限制: 

65535kb

描述

幻方是乙個很神奇的n*n矩陣,它的每行、每列與對角線,加起來的數字和都是相同的。

我們可以通過以下方法構建乙個幻方。(階數為奇數)

1.第乙個數字寫在第一行的中間

2.下乙個數字,都寫在上乙個數字的右上方:

a.如果該數字在第一行,則下乙個數字寫在最後一行,列數為該數字的右一列

b.如果該數字在最後一列,則下乙個數字寫在第一列,行數為該數字的上一行

c.如果該數字在右上角,或者該數字的右上方已有數字,則下乙個數字寫在該數字的下方

輸入乙個數字n(n<=20)

輸出按上方法構造的2n-1 * 2n-1的幻方

樣例輸入

3

樣例輸出

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#includeusing namespace std;

int n;

int mp[200][200];

int cnt;

int main()

else if(mp[nx][ny])

else mp[nx][ny]=++cnt;

x=nx;y=ny;

} for(int i=0;i<(2*n-1);i++)

{ for(int j=0;j<(2*n-1);j++)

{ if(j==0)cout<

神奇矩陣 二維陣列的應用

神奇矩陣 2 9 4 7 5 3 6 1 8 令矩陣的每行每列之和都為15 解法 2,4,6,8,這四個數,正好佔據了矩形的四個角,我們採用填充方法將方格填完 填充規律 在第一行中間填1,然後1的右上角即為2的位置 行越界則移動到最後一行,2的右上角 即為3的位置,一直到碰到已填的數字為止 此時數字...

題3 二維陣列的查詢

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的個二維陣列和乙個整數,判斷陣列中是否含有該整數。例 比如,此時要尋找數字2。從右上角開始尋找,6大於2,6這一列其他數肯定大於6,即可以排除這一列。往前一列5大於2,再往前3大於...

每日一練 二維陣列中的查

內容 在乙個二維陣列中,每一行都按照從左往右遞增的順序排列,每一列都按照從上到下遞增的順序排列。請完成乙個函式,輸入這樣的乙個二維陣列,判斷是否含有該整數。解題思路 首先選取陣列中右上角的數字,如果該數字等於要查詢的數字,則查詢結束 如果該數字大於要查詢的數字,則剔除這個數字所在的列 如果該數字小於...