2011-12-10 9 views
0

例上のすべての可能な単語の生成:GOTワード「ドン」は、ファイル場合VB.NET:ファイル

を私はこれを行うには見当がつかない

ddd 
ddo 
ddn 
dod 
doo 
don 
dnd 
dno 
dnn 
odd 
odo 
odn 
ood 
<...> 

が含まれています。少なくとも3つの記号の単語。

+0

ここを見て、あなたのためのソリューション は、[1] は[StackOverflowの上]があります0 [1]:http://stackoverflow.com/questions/7853653/vb-net-all-combinations/7854261#7854261 – Martin

答えて

1

私は(あなたがそれらを払ったことがない場合)あなたが見ることができない場合がありますので、私はあなたのためにそれをコピーした、専門家Exchangeで解決策を提示:

質問されました: 私はn個のアイテムを持っており、各項目はできます1または2を割り当てられます。したがって、すべての可能な組み合わせを生成する行列結果を得たいと思います。

たとえば、 n = 3の場合、起こり得る結果は次のとおりです。nに対してこの系列を生成できるアルゴリズムが必要です。ありがとうございました。理想的には私は、データテーブル

1 1 1 
1 1 2 
1 2 1 
2 1 1 
2 1 2 
1 2 2 
2 2 1 
2 2 2 

回答に結果を格納したいと思います:あなたは自分のファイルへの書き込みとDebug.Writelineを変更する必要があり、解決策です。ここ

Dim HighestValue As Integer = 2 ' max value 
    Dim NrOfValues As Integer = 3 ' nr of values in one result 
    Dim Values(NrOfValues) As Integer 
    Dim i As Integer 
    For i = 0 To NrOfValues - 1 
     Values(i) = 1 
    Next 
    Values(NrOfValues - 1) = 0 ' to generate first as ALL 1 
    For i = 1 To HighestValue^NrOfValues 
     Values(NrOfValues - 1) += 1 
     For j As Integer = NrOfValues - 1 To 0 Step -1 
      If Values(j) > HighestValue Then 
       Values(j) = 1 
       Values(j - 1) += 1 
      End If 
     Next 
     Dim Result As String = "" 
     For j As Integer = 0 To NrOfValues - 1 
      Result = Result & CStr(Values(j)) 
     Next 
     Debug.WriteLine(Result) 
    Next 

[OK]を

Dim HighestValue As Integer = 3 ' max value 
    Dim NrOfValues As Integer = 3 ' nr of values in one result 
    Dim Values(NrOfValues) As Integer 
    Dim i As Integer 
    For i = 0 To NrOfValues - 1 
     Values(i) = 1 
    Next 
    Values(NrOfValues - 1) = 0 ' to generate first as ALL 1 
    For i = 1 To HighestValue^NrOfValues 
     Values(NrOfValues - 1) += 1 
     For j As Integer = NrOfValues - 1 To 0 Step -1 
      If Values(j) > HighestValue Then 
       Values(j) = 1 
       Values(j - 1) += 1 
      End If 
     Next 
     Dim Result As String = "" 
     For j As Integer = 0 To NrOfValues - 1 
      If Values(j) = 1 Then Result = Result & "d" 
      If Values(j) = 2 Then Result = Result & "o" 
      If Values(j) = 3 Then Result = Result & "n" 
      'Result = Result & CStr(Values(j)) 
     Next 
     Debug.WriteLine(Result) 
    Next 
+0

この機能の使い方は?私は文字列を返す必要があります。 –

+0

e解決の値を含むDebug.WriteLine(Result)の文字列を取り、一緒にgerに連結して、私はあなたにアルゴリズムを与えることができます、あなたはそれをあなたのニーズに適応させる必要があります – Martin