【概述】
找规律是一种常见的题型,当给出相关数据后,我们往往可以利用打表的方法,得到大量的数据,然后再寻找规律。
简单来说,打表就是需要对某个范围内的数据进行判断,判断它是否符合某种条件,然后在接下来的很多次数据中,可能会反复使用到这些判断的结果,为了减少重复计算,可以事先将某个范围的数据的判断结果全都计算并保存起来,当需要再使用到的时候,直接使用即可。
打表实际上是一种思维方法,被广泛的应用于后续的各种算法中,例如:记忆化搜索、动态规划、素数表、斐波那契用数组递推代替函数递归等等。
【线性递推式】
求线性递推式系数是一种常见的找规律的题型,即对于一个暴力打出的表,其可能满足一个线性递推式。
那么我们可以设: F[n] = a*F[n-1] + b*F[n-2] + c*F[n-3] + d * F[n-4] + ...
一般来说,只需要四重 for 循环,从负数开始暴力枚举 a、b、c、d,然后判断与自己所打的表是否相同
【例题】
1.简单打表
2.规律
- 小b和灯泡(51Nod-2489):点击这里
- 0和5(51Nod-1433):点击这里
- Positive Negative Sign(LightOJ-1294):点击这里
- 处女座和小姐姐(2019牛客寒假算法基础集训营 Day3-E)(分类讨论):点击这里
- Sonya and Exhibition(CF-1004B)(分类讨论):点击这里
- Knights in Chessboard(LightOJ-1010)(分类讨论):点击这里
- Margarite and the best present(CF-1080B)(分类讨论):点击这里
- Ekka Dokka(LightOJ-1116)(分类讨论):点击这里