我正在尝试编写一个递归函数,该函数将包含整数列表的列表作为输入并返回类型为 ([Int],Int) 的元组。
([Int],Int)
这是一个“棋盘游戏”,您将获得一个棋盘:
[[5,4,3,8,6],
[0,2,1,0,7],
[0,1,9,4,3],
[2,3,4,0,9]]
这将是一个 4 行 5 列的板。列表中的数字是“硬币值”。
这个棋盘游戏的目标是从列表的顶部到底部收集硬币。您可以从顶行的任何位置开始向下移动,可以直接向下,也可以向左或向右对角线移动。您需要一条能够为您提供最大总硬币价值的路径。
我创建了第一个函数,您在其中输入路径列表 [([Int],Int)],它返回具有最大硬币值的路径 ([Int],Int)。
现在我需要创建一个函数来实际生成将输入到第一个函数中的路径列表。
我知道我将不得不使用递归。
我将输入棋盘(如上面的棋盘)和起始栏。
我必须获取列号,然后创建所有可能路径的列表。
如果我从列号开始,我的下一个可能的步骤是位置(在下一行中)-相同的列号、列号 -1 和列号 +1。我需要递归调用它,直到到达底部。
我如何能够存储这些路径步骤,然后存储所有可能路径的最终列表?
([Int],Int) - [Int] 是列表/列号或行中的位置,Int 是硬币值。
我是 Haskell 的新手,虽然我明白我必须做什么,但编写代码确实很困难。