动态规划学习的第一天,现在对动态规划的理解主要可以体现在“状态”两个字上。每一个最初的决定都会对后续的决定存在影响,因此可以根据不同时刻的状态写出与前一时刻或后一时刻的状态方程,再进行计算,不断迭代。
class Solution {
public int rob(int[] nums) {
int n=nums.length;
if(n==0)return 0;
int dp0=0;
int dp1=nums[0];
int tdp0;
int tdp1;
for(int i=1;i<n;i++){
tdp0=Math.max(dp0,dp1);
tdp1=dp0+nums[i];
dp0=tdp0;
dp1=tdp1;
}
return Math.max(dp1,dp0);
}
}