C/C++教程

c++ 动态规划

本文主要是介绍c++ 动态规划,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

这几天尝试将以前用 java 编写的动态规划程序转化为 c++,发现 c++ 反而运算速度更慢呢,觉得可能有以下几条原因:

  • 在递归运算时,为了加快运算速度,使用 map 类型存储计算过的数据。但 c++ 的 map 没有 java 的 hash map 查找速度快。c++ 中的 map 可以转化为 unordered_map,但我总是出错,c++ 自定义类的 hash 值定义比 java 麻烦多了。

  • 若使用 vector 容器存储计算过的数据,速度应该能快不少。但是涉及到动态规划不同的状态以及对应的结果在 vector 里很快找到的问题。跟一位认识的朋友聊过,可以近似用进制转换的思想:将动态规划中的状态转化为 vector 的索引。但是我觉得浪费了很多 vector 的空间,小规模问题这种方法还是蛮不错的。

  • java 在递归运算时,hash map 有一个函数 computeIfAbsent 计算查找速度特别快,而 c++ 中的 map 再带的 find 函数大大拖累了速度。

  • 我估计在使用 c++ 中的 map 类型时,要进行更多设置,但目前还不清楚怎么弄。

虽然 c++ 原则上比 java 运算速度快,但是经过这两天的折腾,发现 c++ 太难用了,java 的很多函数与功能都可以看做是对 c++ 的改进。当然,也可能是我对 c++ 不熟的缘故。

这篇关于c++ 动态规划的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!