Math 解决模式无效(需要删除)的组合问题

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 *

问题是在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 * 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”排在第五位。但这种方法不容易扩展,因为我们必须彻底应用包含排除原则。