我正在尝试解决LeetCode上的House Robber问题(dp问题)。
来自用户GYX的这个解决方案看起来简单而优雅。
int rob(vector<int>& num) {
int n = num.size();
if (n==0) return 0;
vector<int> result(n+1,0);
result[1] = num[0];
for (int i=2;i<=n;i++){
result[i] = max(result[i-1],result[i-2]+num[i-1]);
}
return result[n];
}
但我就是无法理解这个逻辑。请帮我理清逻辑,以及如何解决类似的问题?