0

こんにちは、私は昨日この質問をしましたが、理解できないという理由で閉じられたので、今回はできる限り具体的にしようと思います。これが状況です。

1.次のような文字配列に A、B、C の 3 文字があります。

char[] characters = {'A', 'B', 'C'};

2.これらの 3 文字のすべての可能な一致を列挙すると、たとえば次のようになります。

Text    = A
tries   = 1
indexes = characters[0] 
------------
Text    = B
tries   = 2
indexes = characters[1] 
------------
Text    = C
tries   = 3
indexes = characters[2] 
------------
Text    = AA
tries   = 4
indexes = characters[0] characters[0] 
------------
Text    = AB
tries   = 5
indexes = characters[0] characters[1] 
------------
Text    = AC
tries   = 6
indexes = characters[0] characters[2] 
------------
Text    = BA
tries   = 7
indexes = characters[1] characters[0] 
------------
Text    = BB
tries   = 8
indexes = characters[1] characters[1] 
------------
Text    = BC
tries   = 9
indexes = characters[1] characters[2] 
------------
Text    = CA
tries   = 10
indexes = characters[2] characters[0] 
------------
Text    = CB
tries   = 11
indexes = characters[2] characters[1] 
------------
Text    = CC
tries   = 12
indexes = characters[2] characters[2] 

3.特定の試行回数が与えられた場合、この特定の試行でのインデックスの数を取得できますか? たとえば、この試行の試行番号 10 では、インデックスが文字 [2] & 文字 [0] であったため、テキストは CA でした (上記のように)。したがって、これらのインデックス番号が試行回数を持つことを知るための数式はありますか? ?

ありがとうございました

4

2 に答える 2

6

この特定の試行でインデックスの数を取得できますか

任意の数の文字について、基数 3 で数を数えているだけです。したがって、単純に 10 進数から 3 進数に変換し、元に戻すだけです。

より短い文字列長の可能性がいくつあるかを判断するには、n3 文字を使用する 3^n の異なる長さの文字列が考えられます。

于 2012-06-07T18:55:08.877 に答える
0

の値がtry4 未満の場合:

characters[try-1]

さもないと:

characters[(try-4)/3], characters[(try-4)%3]

どこ%で はモジュラス演算子で、/は整数除算です

だからtry == 10あなたは得る:

characters[2], characters[1]

:try値は1から始まり、インデックスは0から始まるため、最初から-1が必要です

: モジュラス操作の仕組みにより、2 番目のインデックスは次のように記述されることもあります。(try-1)%3

于 2012-06-07T18:52:50.420 に答える