LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 14234|回复: 5

1到9个数字,分别添满九个方格,要求横竖斜相加都等于15,这个程序如何写?

[复制链接]
发表于 2007-4-13 15:39:12 | 显示全部楼层 |阅读模式
-----------------------------
|        |        |         |
|    6   |    1   |    8    |      
|        |        |         |
|---------------------------|
|        |        |         |
|    7   |    5   |    3    |
|        |        |         |
|---------------------------|
|        |        |         |
|    2   |    9   |    4    |
|        |        |         |
-----------------------------

如上图所释,在这个九个方格中,添加上1到9,9个数字,不能相重,并保证横,竖,斜相加均等于15,如何写这样一个程序,用shell或c程序都行.
****我上面只是己知的答案,假如未知的话该如何编这个程序来算这样的题呢?
 楼主| 发表于 2007-4-13 15:43:12 | 显示全部楼层
上面的格没有打好,大家注意看一下,横着的6+1+8=15 竖着的6+7+2=15,斜着的6+5+4=15,就是这个意思.
我用c写了个小程序,但因为对c不太了解,是用for和if语句一句句嵌套出来的,这样写太笨,并且 还有数据相重的.各位有没有好的程序?
回复 支持 反对

使用道具 举报

发表于 2007-4-13 15:48:00 | 显示全部楼层
幻方啊  网上找找  几百年前就有通项公式了  偶记得~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-13 16:12:47 | 显示全部楼层
Post by biosxjj
幻方啊  网上找找  几百年前就有通项公式了  偶记得~~~


呵呵,是啊,我那天看谢雕英雄传时看到这样一幕的,就想用程序如何解,我刚学程序不久,其实就是想问一下在c或shell中如何表示各个变量的值互不相同,比如有a1 a2..a100,这100个变量的值可能随机变化,但很可能同时有几个变量的值是相同的,我如何在他们的值完全都不相同的情况下打印出他们的结果来?
回复 支持 反对

使用道具 举报

发表于 2007-4-13 20:31:42 | 显示全部楼层
用数学方法怎么接写成 程序就ok了
或者   穷举满足条件的不就ok了
3阶和幻方 很简单的~~
回复 支持 反对

使用道具 举报

发表于 2007-4-14 11:46:45 | 显示全部楼层
给定奇数n的幻方,幻方是由1~n*n组成的方阵,行,列,对角线元素之和都相等。

填充方法是:  

1. 第一个数填在第一行中间  
2. 下一个数填在当前数的右上方  
3. 右上方有数或位置超出方阵的右上角,则填在当前数的正下方  
4. 右上方超出第一行则放在下一列的最后一行,超出最后一列则填在上一行的第一列

恩,等我下午用Java写出来,感觉还是比较简单的。
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表