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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Powershell $変数 = @()の空配...
-
二次元配列のインデックスについて
-
VBA 二次元配列の1つ目を増...
-
隣同士の数字を足し合わせる
-
perlで2次元配列をサブルーチ...
-
マクロ Publicでの配列定義
-
VBAのautofilter、criteriaの配...
-
クラスに配列を渡す方法
-
重複しない乱数発生
-
DataGridViewに配列の値を表示...
-
UWSCの終了の仕方
-
VBAで3秒だけ時間を止めたい
-
vb.netからエクセル関数書き込み
-
VBAでの一時停止と再開の方法
-
配列内定義サブルーチン呼び出し
-
アクティブセルから、A列最終行...
-
スプレッドシート GASの繰り返...
-
画面を強制的に再描画させる方法
-
csh foreachで「*」でエラ...
-
VBのReturnの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでTransposeの不思議
-
VBAのautofilter、criteriaの配...
-
Excel VBA ユーザーフォームの...
-
二次元配列のインデックスについて
-
クラスに配列を渡す方法
-
二次元配列における要素数のは...
-
マクロ Publicでの配列定義
-
リストボックスに縦スクロール...
-
perl 初等プログラミングについて
-
Dim flag(4) as boolean で配列...
-
チェックボックスのperlでの値...
-
バイナリデータの検索(VB.NET2008)
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
隣同士の数字を足し合わせる
-
ファイル名に日付・時刻を付与...
-
VBA 多次元配列を用いてグルー...
-
VB6で配列の最大値を簡単に求め...
-
jcode->jfold で禁則処理
-
リストの再構成について
おすすめ情報