MATLAB:使用For循环划分项目



我需要一些帮助来解决课堂上分配给我的一个问题。这是我们对for loops的介绍。问题是:

想想下面的谜语。

到目前为止,我只有这些:

function pile = IslandBananas(numpeople, numbears)
for pilesize=1:10000000

end

我真的很感谢你的意见。非常感谢。

我会帮助你,但你需要更加努力。而且,循环只需要一个。首先,考虑如何构建此算法。好吧,你知道你必须使用for循环,所以这是一个开始。所以让我们思考一下这个问题是怎么回事。

1) 你有一堆。

2) 第一天晚上,有人把这堆东西分成三堆,发现剩下一堆,这意味着mod(pile,3) = 1

3) 但他丢弃了多余的香蕉。这意味着(pile-1)

4) 他拿走了三分之一,剩下三分之二。这意味着(2/3)*(pile-1)

5) 第二天早上,他们把这堆东西分成三堆,然后又发现剩下一堆,所以这意味着mod((2/3)*(pile-1),3) = 1

6) 但是他们丢弃了多余的香蕉。这意味着(2/3)*(pile-1)-1

7) 最后,如果要成为尽可能小的一堆,他们每个人都必须至少有一根香蕉。因此,最小的桩必须是这样的(1/3)*((2/3)*(pile-1)-1) = 1

我基本上已经给了你答案,剩下的你可以用公式(1/3)*((2/3)*(pile-1)-1)和一个简单的if语句来测试最小可能的整数,即1。这可以在for循环内的四行中完成。

现在,将其扩展到任何数量的人和任何数量的熊,都需要在该公式中进行两个简单的替换!如果你的老师要求,这可以很容易地分成两个嵌套的for循环。

最新更新