【发布时间】:2016-02-04 14:09:42
【问题描述】:
我被困在这个问题上,我会尝试通过一个例子来解释它吗? 假设一只青蛙只向前移动,但它可以移动 1 英寸长的步长或 2 英寸长的跳跃。青蛙可以使用不同的步法和跳跃组合来跑相同的距离。
编写一个函数,计算一只青蛙可以使用多少种不同的组合来覆盖给定的距离。
例如,3英寸的距离可以通过三种方式覆盖:step-step-step、step-jump和jump-step。
我没有成功编写任何代码,这就是我问的原因,但我会尝试用 c# 方式解释我的问题。我得到了 int [1,2,3] 的列表,我需要找到 3 的可能组合,可以是 1+1+1、1+2、2+1。我如何在代码中实现这一点?
【问题讨论】:
-
请尝试用代码说明您的问题。
-
@James Thorpe 如果您查看我的问题,它与您标记的重复问题回复不同。我问的是给定总和的组合,而不仅仅是组合。我只是不知道为什么人们甚至不阅读就对问题投反对票:(
-
一旦你有了枚举所有可能组合的方法,你就可以对每个组合求和,看看它是否与你的目标匹配。
-
我刚刚使用递归解决了这个问题——如果你知道这个概念是什么,那么我认为这将是最简单的方法。在每个递归步骤中,考虑到已经采取的步骤,递归下一个可能的步骤。建立一个列表/字典/等。展开递归堆栈时的有效组合。这是一个巧妙的问题,因为一旦你解决了它,你就可以轻松地扩展它来处理任何步长间隔和最大距离。
标签: c#