dp废物学会了记录路径

在二维dp里面,得到了dp值,那么反着变量,如果当前的dp值等于ans,那么当前值就是满足的解,并且ans--。
比如在最长上升子序列里面
ans就是最长上升子序列的长度。
因为如果当前值就是ans的话,表示当前值是更新后的值。

printf("%d\n", ans);
std::vector<int> v;
for(int i = tot; i >= 1; i--) {
    if(dp[i] == ans) {
        ans--;
        v.push_back(x[i].id);
    } 
}
reverse(v.begin(), v.end());
for(int i = 0; i < v.size(); i++)
    printf("%d\n", v[i]);
posted @ 2020-11-16 22:32  Emcikem  阅读(100)  评论(0编辑  收藏  举报