ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: sailorgg

[Excel 程序开发] [开_63] N*N等和方阵生成器(已公布参考答案)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-11-13 19:36 | 显示全部楼层
10楼老兄,你的结果不正确吧

TA的精华主题

TA的得分主题

发表于 2005-11-15 21:38 | 显示全部楼层

终于找到了奇数阶幻方的规律,还偶然发现这里的lnt函数可以用\代替。即:Int((i - 1) / N)=(i - 1) \ N。但愿单偶数的也能有算法。

[此贴子已经被作者于2005-11-16 12:14:20编辑过]

TA的精华主题

TA的得分主题

发表于 2005-11-17 11:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

关于构造大于2的任意阶幻方的论文,值得参考。

http://www.notia.com.cn/longsong/hfgz_wen1.htm

TA的精华主题

TA的得分主题

发表于 2006-3-17 12:48 | 显示全部楼层
以下是引用cxjsjt在2005-11-12 22:31:52的发言:

太高了,yangking已经够直观、明了了,而rongjun更加简洁,甚至无法理解五句口诀竟只用一句语言表达。看来是很难超越了,还是来做个双偶数的吧。

不好意思,上次竟传了一个没完成的,这次行了。


65itaBw2.rar (9.39 KB, 下载次数: 36)


4格的时候,还有一个答案,不知道可不可以也做出来,其它格的时候,是否有多个答案?

4格的答案是我手算出来的,不好意思,见笑了。

如果哪位大侠能融合奇数和偶数就好了!

TA的精华主题

TA的得分主题

发表于 2006-8-25 11:28 | 显示全部楼层

我的代码(http://northwolves.blog.excelhome.net/user1/northwolves/archives/2006/593.html):

Sub magicsquare(ByVal n As Long, ByRef matrix())
Dim i As Long, j As Long, k As Long, p As Long, a(), temp As New Collection
ReDim matrix(1 To 256, 1 To 256)
If n < 3 Then MsgBox "n must be larger than 2! ": Exit Sub
If n Mod 4 = 0 Then
ReDim a(1 To n, 1 To n)
ReDim b(1 To n, 1 To n)
For i = 1 To n
For j = 1 To n
matrix(i, j) = IIf((i Mod 4) \ 2 = (j Mod 4) \ 2, n * n + 1 - (i - 1) * n - j, (i - 1) * n + j)
Next
Next

Else
If n Mod 4 = 2 Then
p = n / 2
ReDim a(1 To p, 1 To p)
magicsquare p, a

For i = 1 To p
For j = 1 To p
matrix(i, j) = a(i, j)
matrix(i + p, j) = a(i, j) + 3 * p * p
matrix(i, j + p) = a(i, j) + 2 * p * p
matrix(i + p, j + p) = a(i, j) + p * p
Next
Next


For i = 1 To (n - 2) / 4
temp.Add i
Next
For i = 3 * (n - 2) / 4 + 1 To n
temp.Add i
Next

For i = 1 To p
For j = 1 To temp.Count
k = matrix(i, temp(j))
matrix(i, temp(j)) = matrix(i + p, temp(j))
matrix(i + p, temp(j)) = k
Next
Next

Else

For j = 0 To n - 1
For i = 0 To n - 1
If j = 0 Then matrix(j + 1, i + 1) = IIf(i >= (n - 1) / 2, 0, n * (n + 1)) + (i - (n - 1) / 2) * (n + 2) + 1
If j > 0 Then matrix(j + 1, i + 1) = 1 + (n * n + matrix(j, i + 1) + IIf(matrix(j, i + 1) Mod n = 0, 0, n)) Mod n ^ 2
Next
Next
End If
End If
End Sub
 
Sub makemagicsquare()
Dim arr(), n As Long

Randomize
n = CLng(InputBox("please enter an integer", "infomation", 3+Int(Rnd*254)))
magicsquare n, arr
Range("a1").Resize(256, 256) = arr
Range("a1").Resize(256, 256).Columns.AutoFit
End Sub


[此贴子已经被作者于2006-8-25 12:59:09编辑过]

TA的精华主题

TA的得分主题

发表于 2007-4-25 14:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习

TA的精华主题

TA的得分主题

发表于 2007-6-20 23:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学C语言的碰到过,算法知道了就比较简单了,但是不知为什么会有这样的算法

TA的精华主题

TA的得分主题

发表于 2011-7-20 23:41 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-9-6 00:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-8-3 00:24 | 显示全部楼层
这个有规律的,随便多大,我手填都行。

从任意的边界正中格开始填~

呵呵~
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 14:58 , Processed in 0.043359 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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