(问答题)
高兴万圣节去抢劫一条街上的糖果店,为了不触发报警,他不能抢劫连续的2家店(可以间隔1家,也可以间隔多家糖果店),设计程序计算一下高兴万圣节最多能抢到多少糖果。(使用递归方法)
样例格式:
输入:
第一行:有多少糖果店n,n不超过30
第二行:每家糖果店的糖果数量
输出:
能抢到最多糖果的总数
具体样例:
输入:
3
不使用递归可以使用动态规划,每个商店有俩个状态,抢或者不抢,用一个数组表示达到每个商店所获得最大糖果值
如果不抢,那就是上一个商店的值,如果抢则是前两个商店的最大值+本商店的糖果,比较二者的大小确定抢还是不抢。
这个算法也可以写成递归伪代码如下
int qiangjie(vector<int>nums,int len)
{
if(len==1)
return nums[0];
if(len==2)
{
reutrn max(nums[0],mums[1])
}
else{
return max(qiangjie(len-1),qiangjie(len-2)+nums[len]);
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!