我坐在我的办公桌前,我只是想出了一个问题,我想知道是否有人能想出一个解决方案,或者用数学方式来证明这一点。
说我想找到最短的数字串,其中包含0到1000之间的每个数字。例如,字符串“1433”包含数字,1,4,3,14,43,33,143和433。
我可以使用什么算法来构造包含所有数字0-1000的最短字符串。
我没有任何实际的理由让我知道,但我有兴趣听听是否有。
答案 0 :(得分:6)
您要求修改de Bruijn sequence。具体来说,de Bruijn序列的第一个n-1个字符附加到字符串的末尾。
对于您询问的特定情况,它将是10 ^ 3 + 2 = 1002位长(假设1000不包括在内 - 如果你设置的话,你可以安排1000在字符串中是的,但不保证任意选择的(10,3)de Bruijn序列将包含“1000”)。