我试图解决一个编程问题而陷入困境,因为我无法理解其中一个例子,如下所示:
我们猜测一个四位数,猜测是“1234”。给出这个猜测的提示是,
每个数字都不在正确的位置(根据正确答案)。也就是说,1不在位置1,2不在位置2,3不在位置3而4不在位置4.
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组合))但是'无' t得到上述公式的第二部分的解决方案..因为在第1位以1开头的组合将是3! - (在第2位以2开头的组合)..等等我无法继续编写组合数量。)
approach2:
(1可以在3个位置)*(2可以在3或2个位置,基于放置1的位置)*(3可以在1或2个位置,基于2的位置)*(1个位置为4) - 再次不清楚如何找到2,3,4的位置数。
请帮助我了解如何解决此问题
答案 0 :(得分:2)
所以我们的提示是:n1n2n3n4,完全使用1234全部。
1)有三个地方我们可以放入1,让我们留下_1n3n4,_n21n4和_n2n31。
2)对于这三个地方中的每一个,有一个数字可以在三个不同的地方进行 - 我们可以将它放在另一个被拒绝的空间(3 * 2)或第一个空间(3 * 1)。 / p>
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个!排列其余3个的方式)
4个位置在位置2中有2个但在位置1中没有1个(3个!排列其余3个的方法,减去1个在1中的两个案例)
3个位置在位置3中有3个,但在位置2中没有1个或者在位置2中没有1个(3个!排列其余3个的方式,减去1个12的情况,减去1个剩余1个的情况,减去剩下的一例x2)
2个位置在位置4中有4个但是在2个OR 3中没有1个1个OR 2(3个方式排列它们,在开始时减去2个1,从剩余减法2减去2个)中间)
24-15 = 9
答案 1 :(得分:0)
设置哪一个并设置了多少个位置并不重要。每次设置位置时,您的选择都会减1。
现在,如果你问如何编程,那么我们应该首先选择一种语言。