澄清Project Euler#24的措辞意味着什么?

时间:2012-11-06 23:35:57

标签: php permutation

Problem 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次排列?

1 个答案:

答案 0 :(得分:3)

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

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

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

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