1053 奇數幻方

2021-10-19 07:31:15 字數 1087 閱讀 8720

題目描述

幻方(magic square)是一種將數字安排在正方形格仔中,使每行、列和對角線上的數字和都相等的方法。幻方也是一種漢族傳統遊戲。

在《射鵰英雄傳》中郭黃二人被裘千仞追到黑龍潭,躲進瑛姑的小屋。瑛姑出了一道題:數字1~9填到三行三列的**中,要求每行、每列、及兩條對角線上的和都相等。這道題難倒了瑛姑十幾年,被黃蓉一下子就答出來了。這就是乙個最簡單的3階平面幻方。因為幻方的智力性和趣味性,很多遊戲和玩具都與幻方有關,如捉放曹操、我們平時玩的六面體,也成為學習程式設計時的常見問題。

對平面幻方的構造,分為三種情況:n為奇數、n為4的倍數、n為其它偶數(4n+2的形式),其中n 為奇數時,所構造的幻方即為奇數幻方,運用羅伯特的樓梯法來構造最為簡單,具體方法如下:(1)將1放在第一行中間一列;(2)從2開始直到n×n止各數依次按下列規則存放:按 45°方向行走,如向右上;每乙個數存放的行比前乙個數的行數減1,列數加1;(3)如果行列範圍超出矩陣範圍,則迴繞。例如1在第1行,則2應放在最下一行,列數同樣加1;(4)如果按上面規則確定的位置上已有數,或上乙個數是第1行第n列時,則把下乙個數放在上乙個數的下面。

奇數幻方是不是很有趣呢?請你按照上述方法構造出指定奇數的奇數幻方吧!

輸入輸入只有一行,乙個正的奇數n(0輸出

輸出nn的奇數幻方,共n行,每行n個整數(1<=整數<=nn)。

樣例輸入 copy

3
樣例輸出 copy
8 1 6

3 5 7

4 9 2

**樣例
#include

#include

using

namespace std;

const

int n=

110;

int a[n]

[n];

intmain()

x=dx;y=dy;

}for

(int i=

0;i)return0;

}

奇數階幻方

編制奇數階幻方的方法 問題如 http community.csdn.net expert topic 5698 5698866.xml?temp 1421167 簡單描述 給 1 9,9個數,擺放成 3 3 的矩陣,要求每橫排,每豎排,對角線 上 3個數字相加均為15。其中矩陣也可為5 5,7 7...

奇數幻方 輸入N得到NXN幻方

include intmain for int j 0 j1 j h j sum1 for int j 0 j1 j l j sum2 for int i 0 i 判斷每行 列相等個數 for int j 0 j1 j 計算對角線數字和 e n 1 for int i 0 i1 i 計算反對角線數字...

magic squire幻方的學習 奇數階幻方

今天介紹了關於幻方的一些知識,並布置了一些相關的家庭作業。幻方,我的理解就是一種數獨吧,要求每行每列還有對角邊的和都一樣,填進空格的數字是1 n n是階數,比如三階幻方就是將1到9的數字填進3x3的九宮格裡。所有數字的和可以用求和公式 1 2 n n n 1 2 假設每行每列的和為 s,那麼 3s ...