![]() |
1
1
我想我将展示一种更为冗长的方法,它更容易归纳。 我先把问题写下来。
有三个轴可以“改变”。我首先找到轴变化的组合。
接下来,我们把它放进垃圾箱。例如,如果我看到轴0出现两次,它就会变成[2,0,0]。
上面给出了绝对运动。要找到实际的运动,我们必须考虑沿该轴的变化可以是正的也可以是负的。
最后一步是将索引转换为实际位置。所以我们首先编写这个助手函数。
使用实际的移动作用于起始点索引,然后将其转换回位置。
这给了
|
![]() |
2
1
是的,你是对的,
编辑
现在,您可以更改产品的组合(请参见下面的@tobias_k comment),这里还有
|
![]() |
3
1
对于距离1:
输出:
对于距离2:
输出:
|
![]() |
4
0
您可以尝试一种递归方法:跟踪剩余的距离并生成相关元素的组合。
如果还存在一些“死胡同”,这仍然会遇到一些“死胡同”。
如果可能元素的列表较长,则可能需要创建
例子:
输出:
|