![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
A 回答 (3件)
- 最新から表示
- 回答順に表示
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?08b1c8b)
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
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?08b1c8b)
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでTransposeの不思議
-
VBAのautofilter、criteriaの配...
-
ファイル名に日付・時刻を付与...
-
VBA 二次元配列の1つ目を増...
-
Excel VBA ユーザーフォームの...
-
perlで配列の要素が空なのを知...
-
VB6で配列の最大値を簡単に求め...
-
リストボックスに縦スクロール...
-
perl 配列の要素数について
-
perlで2次元配列をサブルーチ...
-
VBA 多次元配列を用いてグルー...
-
二次元配列のインデックスについて
-
マクロ Publicでの配列定義
-
可変長配列を、動的確保した固...
-
画面を強制的に再描画させる方法
-
範囲指定したセルを1つずつ飛...
-
UWSCの終了の仕方
-
CSVファイルの特定の行だけを読...
-
DoEventsが必要な理由について
-
VBAで3秒だけ時間を止めたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでTransposeの不思議
-
VBAのautofilter、criteriaの配...
-
Excel VBA ユーザーフォームの...
-
文字の整列(printf)
-
マクロ Publicでの配列定義
-
Dim flag(4) as boolean で配列...
-
二次元配列のインデックスについて
-
クラスに配列を渡す方法
-
perlで配列の要素が空なのを知...
-
二次元配列における要素数のは...
-
VB6で配列の最大値を簡単に求め...
-
リストボックスに縦スクロール...
-
Strawberry Perl for Windows ...
-
DataGridViewに配列の値を表示...
-
perl 配列の要素数について
-
隣同士の数字を足し合わせる
-
perlで2次元配列をサブルーチ...
-
組み合わせについての質問です...
-
チェックボックスのperlでの値...
-
DBIを使ってSelect文 複数のカ...
おすすめ情報