打表

打表是典型的 空间换时间,一般指将所有可能需要用到的结果事先计算出来存入表,后面如果需要就直接查表。

常见方法有以下几种:

  1. 程序中一次性计算所有需要用到的结果,之后需要用到直接取

    最常用的方法

    如一个大量查询 Fibonacci 数 F(n) 的问题中,如果每次查询都要计算是很耗时的,假设查询 Q 次,时间复杂度即为 O(nQ)。如果进行预处理,即把所有的 Fibonacci 数预先计算并存在数组中,每次查询就只要 O(1),Q 次查询的时间复杂度 O(n+Q)

  2. 在程序 B 中事先算好需要用到的结果,然后手动把这些结果写在程序 A 的数组代码中,然后程序 A 中就可以直接使用

    这种方法一般用在程序一部分过程消耗的时间过多,或者没有想到好的算法,因此在另一个程序中暴力求出结果

    例如 n皇后问题,如果算法不好就容易超时,这是就可以在本地先算出 对所有 n 来说的方案数,然后把算出的结果直接写在数组中,就可以根据题目输入的 n 来输出结果

  3. 对一些感觉不会的题目,先用暴力计算小范围数据结果,然后找规律,也许就能发现一些“蛛丝马迹”

    这种方法用于数据非常大时,因为这样的题目可能不是用直接就能想到的算法来解决的,而需要寻找一些规律


胡凡《算法笔记》
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读