C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 25 を表示中)
■10999 / )  Re[4]: 関数作成
□投稿者/ カンタービレ (110回)-(2007/12/04(Tue) 01:16:25)
2007/12/04(Tue) 01:37:31 編集(投稿者)
No10996 (ハツ さん) に返信
> ■No10992 (επιστημη さん) に返信
>>N文字あるとき、1〜2^N-1 の数を二進表現にすりゃいいんじゃね?
>>
> すみません、上のは例えばの話です。
> 数字 「1 2 3 4 5」だろうが、文字「あいうえお ああああ ううう」だろうがなんだろうがです。
> 組み合わせの所のみ見ていただきたいです。お願いします

って、επιστημηサマの例もご自身の例えに置き換えればいいだけだと思いマスよ・・・。
例の「あ」が「あいうえお」だろうがなんだろうが、じゃないデスか。

例なので、敢えてVB.NETでεπιστημηサマの例をコード化してみました。
#ちょうど立ち上げてたのがVBだったのもありマスが。

   '// TextBox1に「あいうえお ああああ ううう」だろうがなんだろうがスペース区切りで入れてマス。
    Dim str() As String = Me.TextBox1.Text.Split(" ".ToCharArray)    '// 配列化
    Dim len As Long = str.Length     '// パターンの個数デス。
    Dim max As Long = 2 ^ len - 1    '// 2のべき乗(len)−1でパターン数を出しマス。 
    Dim arr(max - 1) As String       '// パターンを入れる配列デス。
    '// パターン数だけループしマス。
    For i As Long = 1 To max
        '// 2進表現にすりゃいいんじゃね部分のためのビット判定デス。
        For j As Long = len - 1 To 0 Step -1
            '// ビットが立っていればその対応する文字を加えマス。
            arr(i - 1) = IIf((i And 1 << j), str(j), "").ToString & arr(i - 1)
        Next j
    Next i

# おっしゃってる内容を、επιστημηサマのロジックに置き換えて、ぱっと書いたらこんな感じ・・(汗)
# 私はアルゴリズムの質問だと思って見てたのデスが、なんか違うコトだったのかしら。。

【追記】コードにコメントいれマス。このビット判定も数に限界ありマスね。

返信 編集キー/


管理者用

- Child Tree -