您的位置:首页 > 其它

【动态规划】打家劫舍

2020-04-05 12:15 357 查看

【动态规划】打家劫舍

题目描述
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。
输入
2,7,9,3,1
输出
12
基本思路
典型的动态规划,相信有了解的同学很快会写出来。每个房间分成两种情况,劫或不劫。劫则上一家不劫,不劫则劫上一家。
动态转移方程
dp[i]=max(a[i]+dp[i-2],dp[i-1]);

#include<bits/stdc++.h>
using namespace std;
int main()
{
int dp[100];
int a[5]={2,7,9,3,1};
dp[0]=2,dp[1]=7;
for(int i=2;i<5;i++)
{
dp[i]=max(a[i]+dp[i-2],dp[i-1]);
}
cout<<dp[4];
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
Liquor___ 发布了30 篇原创文章 · 获赞 1 · 访问量 787 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: