幻方是一種很神奇的 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同學。遊戲開始時,每人都只知道自己的生日。之後每一輪中,所有人會同時將自己當前所知的生日資訊告訴各自的資訊傳遞物件 注意 可能有人可以從若干人那裡獲取資...