我无法理解实施Fannkuch的指示。 说明:http://www.haskell.org/haskellwiki/Shootout/Fannkuch
在“计算翻转次数,此处为5”之后,我迷失了。
答案 0 :(得分:5)
哇,是的,这不是最好的算法描述:)。
我的解释是他们希望你做以下事情:
fannkuch(n) { int maxFlips = 0, printCount = 0; foreach permutation p of [1..n] { maxFlips = max(maxFlips, flipCount(p)); if (printCount++ < 30) printPermutation(p); } print(maxFlips); } flipCount(p) { int count = 0; while (p[0] != 1) { reverse(p, p + p[0]); count++; } return count; }
答案 1 :(得分:-2)
要求打印前30个排列只是限制可以对算法进行的可接受更改的简单方法。