幻方问题
将1,2,…,n的平方个整数填入n*n的棋盘中,是每行每列及两条对角线上的元素之后均相等,满足上述条件的一个安排称为一个n阶幻方。
de la Loubere构造奇数阶幻方的方法
首先将1放入第一行的中间位置上;若i已填入,则除了以下几种特殊情况外,将i+1填入i所在位置的右边一列的上一行:
- 若i在第一行,则将i+1填入i所在位置的右边一列的底行
- 若i在最后一列,则将i+1填入i的上一行的第一列
- 若i在第一行的最后一列或i+1该填的位置已经被填上,则i+1直接填入i所在位置的正下方。
/*
* @author 七印miss
* @time 9/17/2015
* @detail 给出一个奇数幻方的解
*/
#include <iostream>
#include <iomanip>
#define N 7 // 必须为奇数
using namespace std;