UVa 580 Critical Mass (递推 & 计数原理)
题目
题目大意
有一些装有铀(用\(U\)表示)和铅(用\(L\)表示)的盒子, 数量均足够多。要求把\(n\)(\(n ≤ 30\))个盒子放成一行, 但至少有\(3\)个\(U\)放在一起, 有多少种放法? 例如, \(n = 4, 5, 30\)时答案分别为\(3, 8\)和\(974791728\)。
题解
设答案为\(f(n)\), 根据\(3\)个\(U\)的位置分类。假定是\(i\), \(i + 1\), \(i + 2\)这三个盒子, 则前\(i - 1\)个盒子不能有\(3\)个\(U\)放在一起, 而\(i - 2\)和\(i - 1\)仍然有可能与\(i\)和\(i + 1\)组成\(3\)个\(U\), 因此保证\(i - 1\)是\(L\)。设\(n\)个盒子没有\(3\)个\(U\)放在一起的方案数为\(g(n) = 2^n-f(n)\), 则前\(i - 2\)个盒子的方案有\(g(i - 2)\)种。根据加法原理和乘法原理, 得到\(f(n) = 2^{n - 3} + \Sigma_{i = 2}^{n - 2}g(i - 2)2^{n - i - 2}\)。
代码
1 |
|