Algorithm 算法:在有限移动约束下遍历所有数组元素
你好 我有一个大小为[N][N]的二维数组,它将表示一个包含N行和N列的矩形区域/地图 假设我选择中间作为起点(或其他任何地方),我希望在必须重置回起点之前,在所有元素中只移动X次。然后我可以走我走过的路,但那会浪费一个转弯 我只是想知道是否有一个特定的算法来解决这个问题,这样我就可以和我目前的方法进行比较,我现在的方法只是存储我已经做过的动作。(相当混乱的tbh)Algorithm 算法:在有限移动约束下遍历所有数组元素,algorithm,Algorithm,你好 我有一个大小为[N][N]的二维数组,它将表示一个包含N行和N列的矩形区域/地图 假设我选择中间作为起点(或其他任何地方),我希望在必须重置回起点之前,在所有元素中只移动X次。然后我可以走我走过的路,但那会浪费一个转弯 我只是想知道是否有一个特定的算法来解决这个问题,这样我就可以和我目前的方法进行比较,我现在的方法只是存储我已经做过的动作。(相当混乱的tbh) 提前谢谢。看起来你说的是回合制游戏?所以我认为你不应该把它们看作是转折点,而应该把它们看作目标,而不是用a来判断离目标有多少步远,
提前谢谢。看起来你说的是回合制游戏?所以我认为你不应该把它们看作是转折点,而应该把它们看作目标,而不是用a来判断离目标有多少步远,然后假设目标有一个值,除以达到目标所需的转折点的数量,然后选择最高的结果作为你当前的目的地,下一轮你将不得不重新考虑你的战略 我试着让我的答案更清楚,每转一圈都做下面的事情
- 使用一个简单的方法确定实现目标所需的步骤数量李>
- 计算所需的圈数(
)Math.Ceil(steps/stepsPerTurn)
- 以最少的旋转次数确定具有最高值的对象
- 实现这一目标
这里有一个不是最优的策略,但它很简单,相当有效,而且您不需要保存一个大的存储列表,也不需要进行花哨的计算或编码 从当前点开始,一直走到一堵墙。下台阶,向左走。保持前后之字形。如果你到达底部,重新开始,以类似的方式Z字形覆盖上半部分 如果你画画的步子用完了,只需径直走向你之前所在的位置,然后继续画画
这个算法不是最优的,但可能有10行代码和2个变量。问题是什么?你想知道给定N的最小X是什么,相关的算法是什么吗?最小X不是一个有趣的问题。。。X必须至少足以让他到达最远的点,如果他从中间开始,大约是N,如果他从角落开始,大约是2N。我想他需要一种算法,能够以最少的行走次数覆盖整个电路板。隐马尔可夫模型。。