第9講 プロシージャの再帰的使用
第7話 4次順列をプロシージャの再帰的使用を使わずにfor文で実現する
4次順列生成プログラム
Module Module1

  Sub Main() '私は社長だ。
    f (4)
  End Sub

  Sub f(n As Integer)
    Dim i, j, k, l, m, h, hh, hhh, x(24), cn As Integer '将来5次魔方陣まで生成できるように!
    cn = 0
    For i = 0 To n - 1
      x(0) = i + 1
      For j = 0 To n - 1
        h = 1
        If j + 1 = x(0) Then h = 0
        If h = 1 Then
          x(1) = j + 1
          For k = 0 To n - 1
            hh = 1
            For l = 0 To n - 3
              If x(l) = k + 1 Then
                hh = 0
                Exit For
              End If
            Next
            If hh = 1 Then x(2) = k + 1
            If hh = 1 Then
              For l = 0 To n - 1
                hhh = 1
                For m = 0 To n - 2
                  If x(m) = l + 1 Then
                    hhh = 0
                    Exit For
                  End If
                Next
                If hhh = 1 Then x(3) = l + 1
                If hhh = 1 Then
                  cn += 1
                  For m = 0 To n - 1
                    Console.Write("{0:d} ", x(m))
                  Next
                  Console.WriteLine()
                End If
              Next

            End If
          Next

        End If

      Next
    Next
    Console.WriteLine("生成された{0:d}次順列は{1:d}個です。", n, cn)
  End Sub

End Module

実行画面
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
生成された4次順列は24個です。

いよいよ普遍版n次順列生成ソフトの開発をはじめたいと思いますが、
初心者どころか中級者にさえ難しい課題ですから、
ヒントを次話で説明します。

第6話へ   第8話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc** c言語 c** 入門 初心者 基礎から応用まで
eclipse c** 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C**入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC**による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ