import java.util.*;
public class Solution {
//f[i] 表示该位置必选时最打金额
//g[i] 表示该位置不选时最大金额
public int rob (int[] nums) {
// write code here
int n = nums.length;
int[] f= new int [n]; //必选
int[] g = new int [n]; //不选
//1.初始化 必选为发nums[0]
f[0] = nums[0];
g[0] = 0;
//2.填表 1.必选时,此时的值即为g[i-1](表示i-1不选) + nums[i]。2、不选i时,就要看i-1位置选或者不选两种状态
for(int i=1;i<n;i++ ){
f[i] = g[i-1] +nums[i]; //必选
//i-1位置选或者不选两种情况
g[i] = Math.max(f[i-1],g[i-1]);
}
return Math.max(g[n-1],f[n-1]);
}
}



京公网安备 11010502036488号