Math 解决模式无效(需要删除)的组合问题
问题是在N天内,学生可以出席或缺席,但学生不得连续缺席3天或更长时间。因此,组合的总数为-Math 解决模式无效(需要删除)的组合问题,math,combinations,permutation,Math,Combinations,Permutation,问题是在N天内,学生可以出席或缺席,但学生不得连续缺席3天或更长时间。因此,组合的总数为-2^N,每天只有两个选项,A-不存在或P-存在 让我们把N取为7,这意味着总组合是-2^7=128 现在无效的模式是,AAA,AAAA,AAAAAA,AAAAAA,aaaaaaaaa,因此需要从总值中删除它们,以下是我的理解: 1. 3 Absent together: AAAP--- - 2^3 = 8 ---PAAA - 2^3 = 8 PAAAP-- - 2^2 = 4 *
2^N
,每天只有两个选项,A-不存在或P-存在
让我们把N取为7
,这意味着总组合是-2^7=128
现在无效的模式是,AAA,AAAA,AAAAAA,AAAAAA,aaaaaaaaa
,因此需要从总值中删除它们,以下是我的理解:
1. 3 Absent together:
AAAP--- - 2^3 = 8
---PAAA - 2^3 = 8
PAAAP-- - 2^2 = 4 * 3C1 (as there are such combinations) = 12
Total - 28
2. 4 Absent together:
AAAAP-- - 2^2 = 4
--PAAAA - 2^2 = 4
PAAAAP- - 2 *2 = 4
Total - 12
3. 5 Absent together:
AAAAAAP- - 2
-PAAAAAA - 2
PAAAAAP - 1
Total - 5
4. 6 Absent together:
AAAAAAP
PAAAAAA
Total - 2
5. 7 Absent together:
AAAAAAA
Total - 1
无效总数-28+12+5+2+1=48
有效组合总数-128-48=80
请让我知道我的推导是否正确,或者我的理解有误让我们做一个回归方程。长度
k
的有效组合可能以0、1或2“A”结尾-表示此类变体的数量v0、v1和v2
如果将“p”添加到任何有效的长度组合k
v0(k+1) = v0(k) + v1(k) + v2(k)
v1(k+1) = v0(k)
v2(k+1) = v1(k)
如果我们在长度k
的任何零结尾组合中添加“A”,则可以使用一个结尾“A”对长度k+1进行有效组合
v0(k+1) = v0(k) + v1(k) + v2(k)
v1(k+1) = v0(k)
v2(k+1) = v1(k)
如果我们在长度k
的任意一个结尾组合中添加“A”,则可以使用两个结尾“A”对长度k+1进行有效组合
v0(k+1) = v0(k) + v1(k) + v2(k)
v1(k+1) = v0(k)
v2(k+1) = v1(k)
现在看看Python代码()
结果是
0 1
1 2
2 4
3 7
4 13
5 24
6 44
7 81
8 149
9 274
注意,您有错误v(7)=81,而不是80
这是一个更简单的递归表达式:
a(n) = a(n-1) + a(n-2) + a(n-3)
这是一个数学问题,不是一个编程问题。@snetel我把它标记为什么,在哪里标记为编程问题,至少检查一下,即使这是针对编程问题的算法设计。我没有要求任何地方的代码感谢一个精彩的解释这是非常清楚的,有没有一种方法让我得到同样使用排列和组合。我可以看出,我正试图从另一端实现同样的目标,但我添加了一个额外的重复模式,即“aaapaa”,因为它导致80而不是81。Tribonaci的解释非常精彩:当第一个“AAA”位于第一个位置时有2^4个变体,当第一个“AAA”位于第二个位置时有2^3个变体,当第一个“AAA”位于第三个位置时有2^2*2个变体(我们乘以可能的左和右部分的计数),当第一个“AAA”位于第四个位置时有2^1*4个变体,当第一个“AAA”位于第四个位置时有7个变体“AAA”排在第五位。但这种方法不容易扩展,因为我们必须彻底应用包含排除原则。