牛客16464 神奇的幻方
鏈接:https://ac.nowcoder.com/acm/problem/16464
來源:牛客網(wǎng)
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 131072K,其他語言262144K
64bit IO Format: %lld
題目描述
幻方是一種很神奇的 N*N 矩陣:它由數(shù)字 1,2,3,…N x N 構(gòu)成,且每行、每列及兩條對角線上的數(shù)字之和都相同。
當(dāng) N 為奇數(shù)時,我們可以通過下方法構(gòu)建一個幻方:
首先將 1 寫在第一行的中間。
之后,按如下方式從小到大依次填寫每個數(shù) K (K=2,3,…,N x N) :
1.若 (K-1) 在第一行但不在最后一列,則將 K 填在最后一行, (K-1) 所在列的右一列;
2.若 (K-1) 在最后一列但不在第一行,則將 K 填在第一列, (K-1) 所在行的上一行;
3.若 (K-1) 在第一行最后一列,則將 K 填在 (K-1) 的正下方;
4.若 (K-1) 既不在第一行,也最后一列,如果 (K-1) 的右上方還未填數(shù),則將 K 填在 (K-1) 的右上方,否則將 L 填在 (K-1) 的正下方。
輸入描述:
一個正整數(shù) N ,即幻方的大小。
輸出描述:
共 N 行 ,每行 N 個整數(shù),即按上述方法構(gòu)造出的 N x N 的幻方,相鄰兩個整數(shù)之間用單空格隔開。
N = int(input()) H = [] for i in range(N):H.append([])for j in range(N):H[i].append(0)H[0][int((N-1)/2)] = 1 for k in range(2, N**2+1):for i in range(N):for j in range(N):if k-1 == H[i][j]:if i==0 and j!=N-1:H[N-1][j+1]=kelif i!=0 and j==N-1:H[i-1][0]=kelif i==0 and j==N-1:H[i+1][j]=kelif i!=0 and j!=N-1:if H[i-1][j+1]==0:H[i-1][j+1]=kelse:H[i+1][j]=k #print(H)for i in range(N):for j in range(N):print(H[i][j], end =" ")print(" ")總結(jié)
以上是生活随笔為你收集整理的牛客16464 神奇的幻方的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用github托管代码以及github
- 下一篇: Unity3D-InstantOC遮挡剔