牛客16464 神奇的幻方
生活随笔
收集整理的這篇文章主要介紹了
牛客16464 神奇的幻方
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鏈接:https://ac.nowcoder.com/acm/problem/16464
來源:牛客網
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 131072K,其他語言262144K
64bit IO Format: %lld
題目描述
幻方是一種很神奇的 N*N 矩陣:它由數字 1,2,3,…N x N 構成,且每行、每列及兩條對角線上的數字之和都相同。
當 N 為奇數時,我們可以通過下方法構建一個幻方:
首先將 1 寫在第一行的中間。
之后,按如下方式從小到大依次填寫每個數 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) 的右上方還未填數,則將 K 填在 (K-1) 的右上方,否則將 L 填在 (K-1) 的正下方。
輸入描述:
一個正整數 N ,即幻方的大小。
輸出描述:
共 N 行 ,每行 N 個整數,即按上述方法構造出的 N x N 的幻方,相鄰兩個整數之間用單空格隔開。
按照題目描述直接分情況討論就可以
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(" ")總結
以上是生活随笔為你收集整理的牛客16464 神奇的幻方的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库高级知识——MySql锁机制
- 下一篇: 牛客14718 开心的涂刷