奇数幻方

[复制链接]
查看11 | 回复3 | 2011-8-29 14:53:48 | 显示全部楼层 |阅读模式
所谓“幻方”就是一个n*n 的矩形,在这个矩形中有规律的填入数值为 1—n2个数字,并且满足它的行,列,对角线的和相等。
输入奇数n,输出n阶的奇数幻方

回复

使用道具 举报

千问 | 2011-8-29 14:53:48 | 显示全部楼层
用楼梯法最快。 奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯方)。填写方法是这样: 把1(或最小的数)放在第一行正中; 按以下规律排列剩下的n*n-1个数: (1)、每一个数放在前一个数的右上一格; (2)、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列; (3)、如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行; (4)、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内; (5)、如果这个数所要放的格已经有数填入,处理方法同(4)。 这种写法总是先向“右上”的方向,象是在爬楼梯。 需讨论,可以...
回复

使用道具 举报

千问 | 2011-8-29 14:53:48 | 显示全部楼层
编写一个C++程序即可完成你所说的输入奇数n,输出n阶的奇数幻方。#include using namespace std;int main(){ int n; cin >> n; int a[n+1][n+1], i, j, k, bi, bj; for(i=1;i<=n;i++)for(...
回复

使用道具 举报

千问 | 2011-8-29 14:53:48 | 显示全部楼层
那你的问题具体是?...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行