NOIP2015提高組 神奇的幻方

2021-08-27 16:19:46 字數 962 閱讀 8004

noip2015 提高組 day1 t1

幻方是一種很神奇的 n*n 矩陣:它由數字 1,2,3,… ,n*n 構成,且每行、每列及兩條對角線上的數字之和都相同。

當 n 為奇數時,我們可以通過以下方法構建乙個幻方:

首先將 1 寫在第一行的中間。

之後,按如下方式從小到大依次填寫每個數 k(k = 2,3,…,n*n):

1.若 (k-1) 在第一行但不在最後一列,則將 k 填在最後一行,(k-1) 所在列的右一列;

2.若 (k-1) 在最後一列但不在第一行,則將 k 填在第一列,(k-1) 所在行的上一行;

3.若 (k-1) 在第一行最後一列,則將 k 填在 (k-1) 的正下方;

4.若 (k-1) 既不在第一行,也不在最後一列,如果 (k-1) 的右上方還未填數,則將 k 填在 (k-1) 的右上方,否則將 k 填在 (k-1) 的正下方。

現給定 n ,請按上述方法構造 n*n 的幻方。

輸入檔案只有一行,包含乙個整數 n ,即幻方的大小。

輸出檔案包含 n 行,每行 n 個整數,即按上述方法構造出的 n*n 的幻方。相鄰兩個整數之間用單個空格隔開。

輸入

3
輸出

8 1 6 

3 5 7 

4 9 2

【資料範圍】

對於 100% 的資料,1≤n≤39 且 n 為奇數。

解析:模擬。

ps:比noip2017day1t2的模擬良心多了。。。

**:

#include using namespace std;

const int max=40;

int n,x,y,num[max][max];

int main()

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

return 0;

}

NOIP2015提高組Day1 神奇的幻方

問題描述 幻方是一種很神奇的 n n矩陣 它由數字1,2,3,n n 構成,且每行 每列及兩條對角線上的數字之和都相同。當n為奇數時,我們可以通過以下方法構建乙個幻方 首先將1寫在第一行的中間。之後,按如下方式從小到大依次填寫每個數k k 2,3,n n 1.若 k 1 在第一行但不在最後一列,則將...

NOIP2015 神奇的幻方

時間限制 1 sec 記憶體限制 128 mb 提交 163 解決 126 提交 狀態 討論版 命題人 admin 幻方是一種很神奇的n n矩陣 它由數字1,2,3,n n構成,且每行 每列及兩條對角線上的數字之和都相同。當n為奇數時,我們可以通過以下方法構建乙個幻方 首先將1寫在第一行的中間。之後...

Noip2015提高組總結

總體而言noip還行吧,每天前兩題都穩穩地,但是最後一題做得不好。day1,看完題目後,第一題簽到,第二題很直觀想出來了,又畫了個圖驗證了一下,tarjan雖然可能爆棧,但人工棧就沒問題了。第三題認為是dp一類的東西。畢竟是第一次提高組,還是挺緊張的,一二題打得特別仔細特別慢,對拍,肉眼查錯,搞了接...