题解 | #不相邻取数#

不相邻取数

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

相关推荐

不愿透露姓名的神秘牛友
11-26 16:06
已编辑
快手电商 后端 23k-35k
点赞 评论 收藏
分享
11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务