1.吃豆人
problem: 你是一个吃豆人,豆子藏在沿街的房屋中,每间房内都藏有一定的豆子。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被吃豆人闯入,系统会自动报警。
给定一个代表每个房屋存放豆子的非负整数数组,计算你在不触动警报装置的情况下,能够吃到的最多豆子。
请你编写函数bean解决吃豆人的问题。
Example:
输入: [2,3,2]
输出: 3
解释: 你不能先吃 1 号房屋的豆子(豆子数 = 2),然后再吃 3 号房屋的豆子(豆子数 = 2), 因为他们是相邻的。
function max_beans = bean(nums)
if length(nums)==0
max_beans=0;
elseif length(nums)==1
max_beans=nums(1);
else
odd=0;even=0;
for i=1:length(nums)-1
if mod(i,2)==0
even=even+nums(i);
even=max(odd,even);
else
odd=odd+nums(i);
odd=max(odd,even);
end
end
max1=max(odd,even);
odd=0;even=0;
for i=2:length(nums)
if mod(i,2)==0
even=even+nums(i);
even=max(odd,even);
else
odd=odd+nums(i);
odd=max(odd,even);
end
end
max2=max(odd,even);
max_beans=max(max1,max2);
end
end