0

问题 24明确要求:

数字 0、1、2、3、4、5、6、7、8 和 9 的百万分之一字典排列是什么?

如果我的初始字符串是:

$str = "0123456789";

我将请求解释为:对 $string 执行 1,000,000 次排列。

for( $i = 0; $i < 1000000; $i++ ) {

    $str = lexicographicPermute($str);

}

echo $str; // prints 2783915604, an incorrect answer.

但是,如果我只执行 999,999 次排列,那么它会返回正确的答案。

我仍在努力思考为什么它是正确的。

对这个问题的什么解释会导致你不执行 1,000,000 次排列?

4

1 回答 1

3

你错过了你的原始字符串 ( $str = "0123456789") 实际上也是一个排列的事实,它也应该被计算在内。) 考虑一下:如果你这样写会for怎样:

for( $i = 0; $i < 1; $i++ ) {
    $str = lexicographicPermute($str);
}

...你会有多少排列?两个,当然:原始字符串和对其lexicographicPermute()调用的结果。)

作为旁注,我不认为直接方法(从字面上构建那些(百万 - 1)排列)是解决这个问题的正确方法。否则对人类来说不会有这么大的问题,不是吗?)

于 2012-11-06T23:38:24.480 回答