动态规划学习–打家劫舍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版权协议,转载请附上原文出处链接和本声明。