题解 | #不相邻取数#
不相邻取数
http://www.nowcoder.com/practice/a2be806a0e5747a088670f5dc62cfa1e
不相邻
- dp数组存储当前位置的最大和
- 由于不相邻,则当前位置的最大和
- i>2时 只能由前i-2位置或i-3的位置累加得到,从而判断i-2和i-3位置与当前i位置之和取较大者即可
- i<3时 最大值就是本身
cost[0] = 0;
int maxdp = 0;
for (int i = 1; i <= n; i++) {
//边输入边判断
cost[i] = sc.nextInt();
if (i>2){
dp[i] = Math.max(dp[i-2]+cost[i],dp[i-3]+cost[i]);
}else {
dp[i] = cost[i];
}
maxdp = Math.max(dp[i],maxdp);
}
System.out.println(maxdp);