0

嗨,我昨天问过这个问题,但由于不被理解而被关闭,所以这次我会尽量说得更具体一些。所以这里的情况。

1.我在一个字符数组中有 3 个字符:A、B、C,如下所示:

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.现在给定某个try的次数,我们能得到这个特定try的索引数吗?例如,在此尝试的尝试编号 10 处,文本是 CA(如上所示),因为索引是字符 [2] 和字符 [0],所以是否有一个数学方程可以知道这些索引编号具有尝试次数?

谢谢

4

2 回答 2

6

我们可以在这个特定的尝试中获得索引的数量吗

对于任何给定数量的字母,您只是在以 3 为基数计算数字。因此,只需将十进制转换为 base-3,然后再转换回来。

要确定较小的字符串长度有多少可能性:有 3^n 个不同的可能长度字符串n使用 3 个字母。

于 2012-06-07T18:55:08.877 回答
0

如果 的值try小于 4:

characters[try-1]

除此以外:

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

其中%是模运算符,/是整数除法

所以try == 10你得到:

characters[2], characters[1]

注意:由于您的尝试值从 1 开始,索引从 0 开始,我们需要从一开始就为 -1

注意:由于模运算的工作方式,第二个索引也可以写为(try-1)%3

于 2012-06-07T18:52:50.420 回答