高效技巧-打表法
打表法
打表是一种典型的用空间换时间的技巧,一般指将所有可能需要用到的结果事先计算出来,这样后面需要用到时就可以直接查表得到。常见用法如下:
1.在程序中一次性计算出所有需要用到的结果,之后的查询直接取这些结果。
这是最常用的用法,例如在Fibonacci数F(n)的问题中,如果进行预处理,即把所有的Fibonacci数预先计算并存在数组中,那么每次查询就只需要O(1)的时间复杂度。
2.在程序B中分一次或多次计算出所有需要用到的结果,手工把结果写在程序A的数组中,然后在程序A中就可以直接使用这些结果。
这种用法一般是当程序的一部分过程消耗的时间过多,或是没有想到好的算法,因此在另一个程序中使用暴力计算出结果,这样就能直接在原程序中使用这些结果。例如对于n皇后问题来说,如果使用的算法不够好,很容易超时,而可以在本地用程序计算出对所有n来说n皇后问题的方案数,然后把算出的结果直接写在数组中,就可以根据题目输入的n来直接输出结果。
3.对一些感觉不会做的题目,先用暴力程序计算小范围数据的结果哦,然后找规律,或许就能发现一些“蛛丝马迹”。
这种用法在数据范围非常大的时候容易用到,因为这样的题目可能不是用直接能想到的算法来解决的,而需要寻找一些规律才能得到的结果。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 为DeepSeek添加本地知识库
· 精选4款基于.NET开源、功能强大的通讯调试工具
· DeepSeek智能编程
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~