私はHouse Robber問題(dp問題)をリートコードで試していました。 ユーザーGYXの1人からのこのソリューションは、シンプルでエレガントに見えます。Leetcode House robber
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];
}
しかし、私は論理の周りに頭を浮かべることができませんでした。論理と、このような問題にどのようにアプローチするのかを教えてください。