第4講 残確定法によるさらなる高速化
第6話 プログラム解説その3
いよいよ最後
If n > 3 And g > 2 * n And i >= 1 And j = n - 1 Then
wa = 0
For k = 0 To n - 2
wa = wa + mah(i, k)
Next
hhh = 0
sa = Int(n * (n * n + 1) / 2) - wa
If sa < 1 Or sa > n * n Then GoTo owari1
If tyouhukuhantei(sa - 1) = 1 Then GoTo owari1
mah(i, j) = sa
tyouhukuhantei(sa - 1) = 1
hhh = 1
sakusei (g + 1)
GoTo owari1
End If
If n > 3 And g > 2 * n And i = n - 1 And j >= 1 Then
wa = 0
For k = 0 To n - 2
wa = wa + mah(k, j)
Next
hhh = 0
sa = Int(n * (n * n + 1) / 2) - wa
If sa < 1 Or sa > n * n Then GoTo owari1
If tyouhukuhantei(sa - 1) = 1 Then GoTo owari1
mah(i, j) = sa
tyouhukuhantei(sa - 1) = 1
hhh = 1
If g + 1 < n * n Then
sakusei (g + 1)
Else
cn = cn + 1
hyouji
End If
GoTo owari1
End If
を説明します。今日もn = 5を例にとって説明しましょう。
n > 3 And g > 2 * n And i >= 1 And j = n - 1は
0 | 1 | 2 | 3 | 4 | |
0 | 1 | 15 | 24 | 23 | 2 |
1 | 21 | 7 | 10 | 8 | ・ |
2 | 16 | ・ | 13 | ・ | ・ |
3 | 5 | 20 | ・ | 19 | ・ |
4 | 22 | ・ | ・ | ・ | 25 |
0 | 1 | 2 | 3 | 4 | |
0 | 1 | 15 | 24 | 23 | 2 |
1 | 21 | 7 | 18 | 8 | 11 |
2 | 16 | 14 | 13 | 10 | ・ |
3 | 5 | 20 | ・ | 19 | ・ |
4 | 22 | ・ | ・ | ・ | 25 |
0 | 1 | 2 | 3 | 4 | |
0 | 1 | 15 | 24 | 23 | 2 |
1 | 21 | 7 | 18 | 8 | 11 |
2 | 16 | 14 | 13 | 12 | 10 |
3 | 5 | 20 | 3 | 19 | ・ |
4 | 22 | ・ | ・ | ・ | 25 |
ピンクの場所を表しています。
後は、今までと同じなので説明は不用でしょう。
第4講第5話へ 第5講第1話へ