我来发道题,喜欢编程的来想想
一个具有N行、N列其N平方个格个的正方形方阵,要求放置从1——N平方共N平方个数,每个格子只能放一个数,但要求其每一行或每一列之和或对角线之和都要相等!!!这是很古老的算术题,看过射雕的就知道了。
给出3*3的
294
753
618
数学分量占的比重很大啊,我先去Google参考看看
——————————————————
http://www.sznmc.com.cn/ycl/mydoc/mydoc10.htm
知道了方法,实现起来就容易了
[此贴子已经被作者于2004-4-13 16:37:40编辑过]
有空我用VB试试 这个题目我小学的时候奥零匹克竞赛的时候做过,我记得分两种情况N为奇数和偶数,先讨论奇数,那么也就是 3,5,7......
有一个很简单的方法就是先画好2N-1行的格子
如N=3的时候,那么就画5行格子 (0 表示格子),看起来如下图
` ` 0 ` `
` 0 0 0 `
0 0 0 0 0
` 0 0 0 `
` ` 0 ` `
然后按次序写如9个数字(从中间开始填写),写好以后就象这样。
` ` 1 ` `
` 2 0 4 `
3 0 5 0 7
` 6 0 8 `
` ` 9 ` `
看出什么来了吗?对,就是斜着数,写着写就是了,最后一步就是移动了,把1,3,9,7分别移动到对面去,还原成 3 行,移动后如下:
` ` ` ` `
` 2 9 4 `
` 7 5 3 `
` 6 1 8 `
` ` ` ` `
看,中间就是结果了。简单吧,同样如果N=5,那么:
一。画格子
` ` ` ` 0 ` ` ` `
` ` ` 0 0 0 ` ` `
` ` 0 0 0 0 0 ` `
` 0 0 0 0 0 0 0 `
0 0 0 0 0 0 0 0 0
` 0 0 0 0 0 0 0 `
` ` 0 0 0 0 0 ` `
` ` ` 0 0 0 ` ` `
` ` ` ` 0 ` ` ` `
二。填数字
` ` ` ` 1 ` ` ` `
` ` ` 2 0 6 ` ` `
` ` 3 0 7 0 11 ` `
` 4 0 8 0 12 0 16 `
5 0 9 0 13 0 17 0 21
` 10 0 14 0 18 0 22 `
` ` 15 0 19 0 23 ` `
` ` ` 20 0 24 ` ` `
` ` ` ` 25 ` ` ` `
三。移动数字
(上下左右第一次翻转)
` ` ` ` ` ` ` ` `
` ` ` 2 ` 6 ` ` `
` ` 3 0 7 0 11 ` `
` 4 0 8 25 12 0 16 `
` 0 9 5 1321 170 `
` 10 0 141 18 0 22 `
` ` 15 0 19 0 23 ` `
` ` ` 20 0 24 ` ` `
` ` ` ` ` ` ` ` `
(上下左右第二次翻转)
` ` ` ` ` ` ` ` `
` ` ` ` ` ` ` ` `
` ` 3 20 7 24 11 ` `
` ` 16 8 25 12 4 ` `
` ` 9 5 13 21 17 ` `
` ` 22 141 18 10 ` `
` ` 15 2 19 6 23 ` `
` ` ` ` ` ` ` ` `
` ` ` ` ` ` ` ` `
[此贴子已经被作者于2004-4-14 13:22:01编辑过]
楼上的。我的帖子连接里的那个讲的很详细了 不好意思开始没去看,划了一条线我还以为是签名呢 以下是引用游侠无极限在2004-4-14 12:54:49的发言:
楼上的。我的帖子连接里的那个讲的很详细了
仔细看了你的连接里的文章了,说的很专业,我还是觉得我说的比较简单使用一些,呵呵 <P>有点难度</P> <P>这不就是魔方矩阵嘛!!!!</P> <P>其实3*3 矩阵是可以穷举的......</P>
<P>选定9个数字,</P>
<P>总共也不过9!=362880 种情况。</P>
<P></P>
<P>加上一些判断语句就可以了,真的用不了多少时间.....</P>
[此贴子已经被作者于2004-8-27 10:28:17编辑过]
<P>呵呵,居然这么简单的</P><P>……我不会!</P> 用回溯算法!
页:
[1]