思路:
问题本质:给定一个数组a1,a2,...,an , 求从里面选出若干个互不相邻的元素使得和最大。
1.问什么定义什么
定义 f(i) 考虑了前i个元素的最优解。
2.考虑最后一个元素的状态
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。
一个代表每个房屋存放金额的非负整数数组
一个整数表示一夜之内能够偷窃到的最高金额。
输入
1 2 3 1
输出
4
偷窃 1 号房屋 (金额 =1) ,然后偷窃 3号房屋 (金额=3)。
偷窃到的最高金额 =1+3=4 。
输入
2 7 9 3 1
输出
12
偷窃 1 号房屋 (金额=2), 偷窃3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 =1)。
偷窃到的最高金额 =2+9+1=12。
提示:
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.