2

我试图解决一个编程问题并陷入困境,因为我无法理解以下示例之一,

我们猜测一个四位数字,猜测是 "1234" 。这个猜测给出的提示是,

  1. 每个数字都不在正确的位置(根据正确答案)。即 1 不在位置 1,2 不在位置 2,3 不在位置 3,4 不在位置 4。

  2. 4位正确答案包含数字1,2,3,4。

该示例给出了基于上述约束的四位数字的可能组合数为 9。{2143,2341,2413,3142,3412,3421,4123,4312,4321}

我试图以这种方式解决问题:

方法1:

(组合总数为 4!)-((在位置 1 中以 1 开头的组合 + 在位置 2 中带有 2 的组合 + 在位置 3 中带有 3 的组合 + 在位置 4 中带有 4 的组合))但无法到达上述公式第二部分的解决方案..因为在位置 1 以 1 开头的组合将是 3!-(在位置 2 以 2 开头的组合).. 依此类推,我无法继续写作组合的数量)。

方法2:

(1 可以在 3 个位置)*(2 可以在 3 或 2 个位置,取决于 1 的位置)*(3 可以在 1 或 2 个位置,基于 2 的位置)*(1 个位置为 4)- - 再次不清楚如何找到 2、3、4 的位置数。

请帮助我了解如何解决此问题

4

2 回答 2

2

所以我们的提示是:n1n2n3n4,只使用一次所有 1234。

1) 我们可以在三个地方放 1,剩下 _1n3n4、_n21n4 和 _n2n31。

2) 对于这三个地方中的每一个,都有一个数字可以放在三个不同的地方——我们可以将它放在另一个被拒绝的空间 (3*2) 或第一个空间 (3*1) 中。

3a) 如果我们把它放在另一个被拒绝的空间中,最后一对数字只有一个方向,它可以在 (6*1) 中。

3b) 如果我们把它放在自由空间中,最后一对数字只有一个方向,它可以在 (3*1)

所以有9种可能:

_1__
2143
4123
3142

__1_
3412
4312
2413

___1
4321
3421
2341

第二种思考方式是这样的:

有4个!= 24 种可能的排列。

6 个位置有 1 个在位置 1(3 个!剩余三个的排列方式)

4 个位置在位置 2 中有 2 个,但在位置 1 中没有 1 个(3!排列剩余三个的方法,减去 1 在 1 中的两种情况)

3 个位置在位置 3 中有 3 个,但在位置 1 中没有 1 个或在位置 2 中没有 2 个(3!排列剩余三个的方法,减去 12 的一种情况,减去剩余 1x 的一种情况,减去一种情况x2 剩余)

2 个位置在第 4 位有 4 个,但没有 1 合 1 或 2 合 2 或 3 合 3(3 种排列方式,开始时用 1 减去 2,中间用 2 减去 2)

24-15 = 9

于 2013-06-14T00:56:30.307 回答
0

设置哪一个并不重要,重要的是设置了多少位置。每次设置位置时,您的选择减 1。

现在,如果您要问如何编程,那么我们应该首先选择一种语言。

于 2013-06-14T00:56:18.570 回答