LeetCode198.打家劫舍 (动态规划)

本题分析总结:

将大问题划分称为小问题,得到递推方程 dp[i] = max(dp[i-1],dp[i-2]+value[i])
从而思路进行转变,不再去分析 局部如何使结果达到最优,而是从整体上去考虑最优结果

#题解代码
#include <stdio.h>
int main() {
    int arr[] = {2,1,2,9},size = 4;
    int dp[size],result;
    dp[0] = arr[0];
    dp[1] = arr[0] > arr[1] ? arr[0]:arr[1];
    for(int i = 2;i<size;i++){
        dp[i] = dp[i-1] > dp[i-2] + arr[i] ? dp[i-1] : dp[i-2] + arr[i];
    }
    result = dp[size-1];
    printf("%d ",result);
    return 0;
}

posted @ 2022-08-23 14:41  TCcjx  阅读(21)  评论(0)    收藏  举报