在二维dp里面,得到了dp值,那么反着变量,如果当前的dp值等于ans,那么当前值就是满足的解,并且ans--。
比如在最长上升子序列里面
ans就是最长上升子序列的长度。
因为如果当前值就是ans的话,表示当前值是更新后的值。
printf("%d
", 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
", v[i]);