我需要一些帮助来解决我在课堂上分配的问题。这是我们对for loops
的介绍。这是问题所在:
考虑下面的谜语。
到目前为止,这就是我的全部内容:
function pile = IslandBananas(numpeople, numbears)
for pilesize=1:10000000
end
我非常感谢您的意见。谢谢!
答案 0 :(得分:2)
我会帮助你,但你需要更加努力。而且,你只需要一个for循环。首先,考虑如何构建此算法。嗯,你知道你必须使用for循环,所以这是一个开始。因此,让我们考虑一下问题所在。
1)你有一堆。
2)第一天晚上有人抓住了它并将其分成3并发现剩下一个,这意味着mod(pile,3) = 1
。
3)但他丢弃了额外的香蕉。这意味着(pile-1)
。
4)他占了三分之一,剩下三分之二。这意味着(2/3)*(pile-1)
。
5)早上他们把桩分成3并再次找到剩下的,这意味着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循环。