0

我有一套 3 个用于 Hanoi Towers 游戏的钉子:

int[][] pegs = new int[N_PEGS][N_DISCS];

所以 peg 1 是pegs[0], peg2 是pegs[1], peg3 是pegs[2]

鉴于id两个挂钩位置,我需要得到id另一个,因此:

if (startFromPeg == 0 && endAtPeg == 1) {
    useAsTempPeg = 2;
}

换句话说,在集合 S = {0, 1, 2} 中,我希望在考虑参数 {s1, s2} 后留下元素。

对于一组 3 个钉子,我可以通过简单的数学来做到这一点,除非我弄错了:

useAsTempPeg = N_PEGS - startFromPeg - endAtPeg;

这似乎总是给出正确的结果:

3 - 0 - 1 = 2 (ok)
3 - 0 - 2 = 1 (ok)
3 - 1 - 2 = 0 (ok)

我怎样才能使这个公式通用并玩游戏N_PEGS > 3?(那样会是一个更容易的游戏,但这是故意的)。

4

1 回答 1

0

您可以使用 {Sum_of_peg_indices} - {Sum_of_pegs_selected}。所以对于 3 你有 (0+1+2)=3={Sum_of_peg_indices} ,所以你得到了你提到的公式。

于 2012-08-20T07:27:42.347 回答