NOIP2015 Day1T1 神奇的幻方

2021-07-24 03:34:16 字數 1123 閱讀 8818

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

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

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

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

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

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

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

若 (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為奇數。

簡單的模擬,直接根據題意處理即可。(附上比賽時的**)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

int x[2500],y[2500],f[50][50],n;

int main()

if (x[i-1]!=1 && y[i-1]==n)

if (x[i-1]==1 && y[i-1]==n)

if (x[i-1]!=1 && y[i-1]!=n)

else}}

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

printf("%d\n",f[i][n]);

}fclose(stdin); fclose(stdout);

return

0;}

noip2015day1t2 資訊傳遞

把每個同學看成乙個點,傳遞關係看成一條邊,點數等於邊數,因此圖由若干個環或環鏈復合邊數等於點數的東西組成,不存在孤立鏈。在圖上,傳遞一輪後,每個點掌握沿邊前乙個點的資訊,傳遞x輪後,任意乙個點恰好掌握沿邊反向前進x條邊的路徑上的所有點的資訊,要聽到自己的資訊,也就是在環上走一圈。這樣就把題目抽象為找...

資訊傳遞 NOIP2015 day1 T2

題文 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資訊,...

資訊傳遞(NOIP2015提高組Day1T2)

題目描述 有n個同學 編號為1到n 正在玩乙個資訊傳遞的遊戲。在遊戲裡每人都有乙個固定的資訊傳遞物件,其中,編號為i的同學的資訊傳遞物件是編號為ti同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...