【问题标题】:Implementing a recursion algorithm on a 3D array in c在c中对3D数组实现递归算法
【发布时间】:2010-12-04 16:31:03
【问题描述】:

我需要实现一个具有以下签名的函数:

int rec(int board[SIZE][SIZE][10])

* SIZE 是一个常量。

函数应该是递归的。 棋盘本身是二维的,第三维用于保存单元格的可能值。

我的问题是:如果函数不接受板子的当前行和列作为参数,我如何递归扫描板子?

【问题讨论】:

  • 到目前为止你做了什么?
  • 我考虑过全局变量,但我意识到这是有问题的,因为我会从几个方向推进董事会,而跟踪这些变量会很棘手
  • 要么你的家庭作业是假的,要么你的解释不正确(后者更有可能)。根据您计划对电路板执行的操作,您实际上可能不需要传递行和列索引。
  • 我需要扫描板上的所有单元格,如果只剩下 1 个可能的值,则为每个单元格分配该值

标签: c recursion


【解决方案1】:

你的函数真的必须是递归的吗?你知道这个数组只有 3 个维度,所以一个从头到尾扫描整个数组的算法可以用不超过 3 个嵌套的 for 循环来实现(2 个用于识别当前单元格,一个用于迭代所有 10 个值单元格)。

关于这一点,当您说“保存单元格的可能值”时,该单元格实际上是否有 10 个单独的整数需要跟踪?相反,如果它只是一个具有 10 个可能的不同值的 int,那么数组的第三维是不必要的。虽然可能有 10 个可能的值,但单元格一次只能保存其中一个。

【讨论】:

  • 函数必须是递归的(这是一个家庭作业)。我再次知道这个实现并不完美(关于数组的第 3 维),但它是强加给我的。
猜你喜欢
  • 2019-09-21
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 2020-11-19
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多