
A 回答 (3件)
- 最新から表示
- 回答順に表示

No.3
- 回答日時:
質問に答えたことを忘れてました(笑)
こんな感じでどうですかね、今ちょろっと書いてみただけでもう少しうまい処理があるかもしれませんが…
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'組み合わせの要素が入った配列
Dim test As String() = {"1", "2", "3", "4"}
'配列をArrayListにセットする
Dim element As New ArrayList
For i As Integer = 0 To test.Length - 1
element.Add(test(i))
Next
'組み合わせ表示メソッドを呼び出す
DispCombination("", element)
End Sub
''' <summary>
''' 組み合わせ表示メソッド
''' 最終要素になるまで繰り返し呼び出される
''' </summary>
''' <param name="pattern">組み合わせのパターン</param>
''' <param name="element">要素が入ったArrayList</param>
''' <remarks></remarks>
Private Sub DispCombination(ByVal pattern As String, ByVal element As ArrayList)
'要素が最後の要素かどうかの判定フラグ
Dim isFinal As Boolean
If element.Count = 1 Then
isFinal = True
End If
'要素の数だけForで回す。
For i As Integer = 0 To element.Count - 1
'要素のArrayListのコピーを作る
Dim elementClone As ArrayList = CType(element.Clone, ArrayList)
'現在の組み合わせパターン
Dim ptn As String = pattern & element(i).ToString
'組み合わせに使った要素をArrayListから排除
elementClone.RemoveAt(i)
If isFinal Then
'最後まで組み合わせたら、出来上がったパターンをコンソールに表示
Console.WriteLine(ptn)
Else
'まだ要素が残っているなら、再帰呼び出し
DispCombination(ptn, elementClone)
End If
Next
End Sub
↓出力結果
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321

No.2
- 回答日時:
配列から1つアイテムを選ぶ→残った配列から1つアイテムを選ぶ→以下繰り返し…
ってな感じで全網羅はできると思います。
単純に考えればForのネストで算出することになるのかなぁ。
配列とリストとかを組み合わせればうまく書けそうです。
この回答への補足
回答ありがとうございます。
しかしながら、まだまだプログラム初心者のため、うまくできませんでした。
お時間ありましたら、具体的なプログラムをいただけないでしょうか?
※現在、VB2005を扱っております。またc言語なら理解できます。
No.1
- 回答日時:
可能です。
#Basicは書けないのですが・・「再帰呼び出し」は使えますよね?
最初にn個のうち最初の1つを確定させます。これがn通りあります(Loopで回します)。残った(n-1)について最初に選んだものを配列から削除した配列うを渡して同様にします(再帰呼び出し)。与えられる数が1になるまで繰り返せばよろしいかと思います。
この回答への補足
回答ありがとうございます。
しかしながら、早速再帰呼び出しを調べてプログラムしようとしたのですが、うまくできませんでした。
お時間ありましたら、具体的なプログラムをいただけないでしょうか?
※c言語なら理解できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- 英語 節を列挙する例示表現について 2 2022/08/15 13:52
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- 計算機科学 アルゴリズムについて 1 2023/01/01 19:43
- Excel(エクセル) Excelで漢字人名が勝手に並び変わる 2 2023/01/14 22:14
- Excel(エクセル) ピボットテーブルの表示変更の仕方 初心者なので、的外れな質問だったらすみません 受注日ごとに商品名と 1 2022/04/26 23:23
- Excel(エクセル) 【エクセル】並び替えからの並び替え方法 7 2022/07/22 09:46
- Excel(エクセル) エクセルの並び替えについて 5 2022/07/11 00:49
- その他(Microsoft Office) 1の行を固定した上でVBAを用いて日付順に自動並べ替え 2 2022/06/06 15:09
- Excel(エクセル) 関数を教えてください。 2 2023/08/01 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perl 文字列を配列に直す方法
-
perlfaq4 で紹介されている Fis...
-
データの受け取り方
-
perl 配列の要素数について
-
変数名を配列として利用するには?
-
アクティブなインターフェース...
-
至急教えてください!!
-
サブルーチンの戻り値
-
配列の中に配列をセットし、呼...
-
配列表示画面方法について
-
Perlで配列に設定した値が関数...
-
条件に一致した塩基配列を含む...
-
$abc[1] と @abc[1] の違い...
-
perl 初等プログラミングについて
-
配列でデータを渡したい
-
最大値を出力するプログラム(@A...
-
変則的なスタック配列を使う
-
CSVから値の割り出し
-
最後のフィールドを抜き出したい。
-
if elsif 構文と複数の配列の使用
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
クラスに配列を渡す方法
-
二次元配列のインデックスについて
-
文字の整列(printf)
-
Dim flag(4) as boolean で配列...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
複数の配列の全ての組み合わせ...
-
Excel VBA ユーザーフォームの...
-
リストボックスに縦スクロール...
-
バイナリデータの検索(VB.NET2008)
-
可変長配列を、動的確保した固...
-
Strawberry Perl for Windows ...
-
perlで配列の要素が空なのを知...
-
if文条件式で配列を使用したい
-
VBScript 配列
-
VBA 二次元配列の1つ目を増...
-
二次元配列における要素数のは...
-
配列の各要素に文字列結合
-
Powershell $変数 = @()の空配...
おすすめ情報