关于dp方案记录的方法思考与优化
Posted 俺是小程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于dp方案记录的方法思考与优化相关的知识,希望对你有一定的参考价值。
一般的方法是记录状态是从哪儿转移来的然后递归输出。
但是明显递归有爆栈的危险。
所以可以用一个 (增加理解难度而实际没用的) 方法来避免。
具体来说,用一个vector保存答案。
例如这一题中,一般题解是用
void print(int x,int y) { if(pre[x][y]==y) { cout<<y<<" "; return; } print(x-1,pre[x][y]); cout<<y<<" ";//记得输出是逆序的 }
来输出的,而我用了
int x = F; std::vector<int> v; for(; x >= 1; y = pre[x][y], x--) v.push_back(y); reverse(v.begin(), v.end()); cout<<ans<<endl; for(int i = 0; i < (int) v.size(); i++) cout<<v[i]<<" "; puts("");
来处理。
有什么用呢?增加代码长度与理解难度(笑)
以上是关于关于dp方案记录的方法思考与优化的主要内容,如果未能解决你的问题,请参考以下文章