1.打表
打表,是一个信息学专用术语,意指对某种找规律等题目,直接输出答案。这种算法也在对某种题目没有最优解法时,用来得到分数的一种策略。
打表一般分为两步:找到答案与输出答案。
找到答案的方式
一、通过找规律,找出对于每个输入数据n,f[n]的最终结果。
常见题目有费波纳契数列等;
二、通过暴力搜索,找出对于数据的答案,适用于数据较大,题目简单的情况;
三、通过手算,找出每个数据的答案,适用于数据较小且题目较难的情况。
输出答案的方式
一、直接把打表程序加上输入输出提交:耗时大,程序占用空间小;
二、把打表的数据放入程序,加上输入输出提交:耗时O(1),程序占用空间大。
直接带入数据的打表占用空间大
打表的技巧
1、可把一些相差不大的数据化为与上一段之差:
例如: f[i]储存为f[i]-f[i-1]
输出时以前缀和形式输出。
2、分段打表。
把数据分为几段,每段根据输入数据,找到相应倍数进行输出。
就是在数据比较小的时候,比如测试数据只有一到一百的情况,你就可以先全部在自己的机子上算好,存入一个数组,交的时候只要cin>>n;cout<<a[n]<<endl;