■■■■■算法的题目~我这个题目谁能帮帮我啊~■■■■■
求一算法:
求:
a1 a2 a3
a4 a5 a6
a7 a8 a9
使得每一行的和等于15
每一列的和也等于15
对角线的和也是15
请高手赐教~~`谢谢!
问题点数:50、回复次数:11Top
1 楼badbrain(badbrain)回复于 2004-05-01 21:00:55 得分 0
只针对3*3吗?Top
2 楼minl(惯犯)回复于 2004-05-01 21:09:37 得分 0
一般是奇数列的才有解,但这个只是数学问题按顺序往里排就行
Top
3 楼slimpotato(显显)(地狱式恶补英语中..)回复于 2004-05-01 21:16:53 得分 0
'每一行
a1 + a2 + a3 = 15
a4 + a5 + a6 = 15
a7 + a8 + a9 = 15
'每一列
a1 + a4 + a7 = 15
a2 + a5 + a8 = 15
a3 + a6 + a9 = 15
'对角线
a1 + a5 + a9 = 15
a3 + a5 + a7 = 15
求a1,a2,a3,....a9
谢谢
Top
4 楼yinweihong()回复于 2004-05-01 22:26:08 得分 0
有些偶的也有解
对于奇:
设个数组,如图所示:
a1 a2 a3
a4 a5 a6
a7 a8 a9
我先另a2=1
然后就可以直接赋值了
规律是:
右上方即:右上方没数组元素则移到该行最后一个元素a9=2---a9右上方没元素 a4=3---
a4右上方位置已被占下移一位:a7=4---右上方a5=5----a3=6按照规则a6=7----a1=8--a8=8
a6=9
对所有奇数都满足
算法自己写吧!!Top
5 楼mycoldboy(寒潭清)回复于 2004-05-01 22:43:18 得分 0
太简单了Top
6 楼northwolves(狼行天下)回复于 2004-05-01 23:51:21 得分 20
最简单的幻方:
'易知九宫图中间为5,关于中心对称位置之和为10,分析如下:
' a b c
' d 5 10-d
' 10-c 10-b 10-a
'if a is an odd,c is an odd ,then 10-a is an odd,10-c is odd,so b,d,10-d,10-b are all odds(paradox)
'if a is an odd,c is an even ,then 10-a is an odd,10-c is even,so b,d,10-d,10-b are all evens(paradox)
'if a is an even,c is an odd ,then 10-a is an even,10-c is odd,so b,d,10-d,10-b are all evens(paradox)
'if a is an even,c is an even ,then 10-a is an even,10-c is even,so b,d,10-d,10-b are all odds(maybe)
'so a ,c must be evens; b,d must be odds
Dim nine As New Collection
Private Sub Form_Load()
Dim a As Integer, b As Integer, c As Integer, d As Integer, i As Integer
For a = 2 To 8 Step 2
For b = 1 To 9 Step 2
For c = 2 To 8 Step 2
For d = 1 To 9 Step 2
If a + b + c = 15 And a + d - c = 5 And a + c <> 10 And b + d <> 10 And b <> 5 And d <> 5 Then nine.Add StrConv(a & b & c & vbCrLf & d & "5" & (10 - d) & vbCrLf & (10 - c) & (10 - b) & (10 - a), vbWide) '全角显示
Next: Next: Next: Next
For i = 1 To nine.Count
Debug.Print "九宫图之" & i & vbCrLf & nine(i) & vbCrLf
Next
End SubTop
7 楼northwolves(狼行天下)回复于 2004-05-02 00:07:10 得分 30
Sub huanfang(ByVal n As Integer)
Me.Caption = n & " 阶幻方"
Cls
ForeColor = vbBlue
FontSize = 12
Dim num() As Integer
If n Mod 2 = 0 Then Exit Sub
ReDim num(-1 To n - 1, n - 1) As Integer
For j = 0 To n - 1
For i = 0 To n - 1
num(-1, i) = IIf(i >= (n - 1) / 2, 0, n * (n + 1)) + (i - (n - 1) / 2) * (n + 2) + 1
num(j, i) = IIf(j = 0, num(-1, i), 1 + (n * n + num(j - 1, i) + IIf(num(j - 1, i) Mod n = 0, 0, n)) Mod n ^ 2)
Print Tab(4 * i); Space(4 - Len(Str(num(j, i)))) & num(j, i);
Next
Print
Next
End Sub
Private Sub Form_Click()
huanfang 3
huanfang 25
End Sub
Top
8 楼pigpag(Pigpag - A GRE Fighter)回复于 2004-05-02 00:09:59 得分 0
九子斜列
左右互易
上下对换
四维推出
这个是等差数列的情况。非等差数列只要设三个未知数,就能把其它所有值表示出来了。再用约束条件循环演算一下就可以了。Top
9 楼lsftest()回复于 2004-05-02 01:14:54 得分 0
典型的三阶幻方:
http://www.oh100.com/teach/student/quwei/shuxuequwei/200208/2002050202297.htmlTop
10 楼slimpotato(显显)(地狱式恶补英语中..)回复于 2004-05-02 10:10:43 得分 0
谢谢各位啦~!Top
11 楼slimpotato(显显)(地狱式恶补英语中..)回复于 2004-05-02 10:18:12 得分 0
谢谢northwolves(野性的呼唤) 的讲解
和详细的算法!Top




