动态规划学习--1.打家劫舍C语言实现

动态规划学习–打家劫舍C语言实现

寻找一排房子中,同一晚上不能偷盗相邻房间,计算最大奖励的代码。

#include <stdio.h>

int max(int a, int b)
{
    if(a >= b)
        return a;
    else
        return b;
}
int main(void)
{
    int f = 0;
    int M[1024] = {0};
    int k = 0;
    while (1)
    {
        k++;
        scanf("%d", &M[k]);
        if(getchar() == '\n')
            break;  
    }

    int F[k];
    if(k == 1)
        F[1] = M[1];
    else
    {
        if(k == 2)
            F[2] = max(M[1], M[2]);
        else
            if(k >= 3)
            {
                F[1] = M[1];
                F[2] = max(M[1], M[2]);
                for(int i=3; i<=k; i++)
                {
                   F[i] = max(F[i-1], F[i-2]+M[i]);
                }
            }
    }
    printf("%d", F[k]);
    return 0;
}
输入(用换行结束):
2 5 6 7 9 5
输出:
17

版权声明:本文为weixin_44103364原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。