题解 | #不相邻取数#

不相邻取数

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);
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务