题解 | #不相邻最大子序列和#
不相邻最大子序列和
http://www.nowcoder.com/practice/269b4dbd74e540aabd3aa9438208ed8d
和小偷偷东西一样,不能偷相邻的两个元素,每个值都有两种状态,偷和不偷,那么取最大值即可
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算
* @param n int整型 数组的长度
* @param array int整型一维数组 长度为n的数组
* @return long长整型
*/
function subsequence( $n , $arr )
{
$dp[0]=$arr[0];
$dp[1]=max($arr[0],$arr[1]);
for($i=2;$i<$n;$i++){
// 最大是 偷当前的+前两个位置最大值和不偷当前的那就是和前一个一样 取最大的
$dp[$i]=max($dp[$i-2]+$arr[$i],$dp[$i-1]);
}
return max(0,max($dp));
}

