アットウィキロゴ

練習問題6

Private Sub Command1_Click()
Dim n1 As Single
Dim n2 As Single
Dim n3 As Single
Dim m As Single
Dim rev(2 To 9, -1 To 1, -1 To 1, -1 To 1) As Single
Dim fastrev(-1 To 1, -1 To 1) As Single
Dim v(1 To 9, -1 To 1, -1 To 1) As Single
Dim endrev(-1 To 1, -1 To 1) As Single
Dim endv(-1 To 1, -1 To 1) As Single
Dim ch(1 To 10) As Single
Dim fee(1 To 10) As Single
Dim gotoc(1 To 9, -1 To 1, -1 To 1) As Single
For m = 2 To 9
For n1 = -1 To 1
For n2 = -1 To 1
For n3 = -1 To 1
rev(m, n1, n2, n3) = 0
Next
Next
Next
Next
For n1 = -1 To 1
For n2 = -1 To 1
fastrev(n1, n2) = 0
Next
Next
For n1 = -1 To 1
For n2 = -1 To 1
v(1, n1, n2) = fastrev(n1, n2)
Next
Next
For m = 2 To 9
For n1 = -1 To 1
For n2 = -1 To 1
vs = -999
For nx = -1 To 1
u1 = rev(m, nx, n1, n2)
v1 = u1 + v(m - 1, nx, n1)
If v1 > vs Then nxs = nx
If v1 > vs Then vs = v1
Next
gotoc(m, n1, n2) = nxs
v(m, n1, n2) = vs
Next
Next
Next
For n1 = -1 To 1
For n2 = -1 To 1
endrev(n1, n2) = 0
Next
Next
For n1 = -1 To 1
For n2 = -1 To 1
u1 = endrev(n1, n2)
endv(n1, n2) = u1 + v(9, n1, n2)
Next
Next
vs = -999
For n1 = -1 To 1
For n2 = -1 To 1
If endv(n1, n2) > vs Then nx1 = n1
If endv(n1, n2) > vs Then nx2 = n2
If endv(n1, n2) > vs Then vs = endv(n1, n2)
Next
Next
ch(9) = nx1
ch(10) = nx2
For t = 2 To 9
m = 10 - t
n2 = ch(m + 2)
n1 = ch(m + 1)
ch(m) = gotoc(m + 1, n1, n2)
Next
For m = 1 To 10
fee(m) = fee(m) + ch(m)
Next
e = 0
For m = 1 To 10
e = e + ch(m) ^ 2
Next
If e < 1 Then s = 1000


End Sub
最終更新:2009年09月23日 04:12