基本上我有一个 3 x 3 网格,其中填充了两位数字 00 - 99。其中一些数字作为输入给出,其余数字未知。关于如何用 C 语言暴力解决此类问题,有哪些建议?
EDIT:抱歉我忘记了部分问题。每行、每列和对角线的总和必须相同。我不需要任何代码,只是一些开始使用算法的想法
对于您的问题,有一个简单的递归解决方案,这是一种称为回溯的强力示例(谷歌搜索)。
递归函数(例如 fill_next)查找下一个具有未知值的单元格。如果没有这样的单元格,它会检查正方形以查看其是否符合要求(总和正确),如果是,则将正方形打印为解决方案;然后它返回。如果存在具有未知值的单元格,它将循环,依次尝试该单元格的 0 到 99 中的每个值,然后递归调用自身以填充下一个未知单元格。
如何到达下一个具有未知值的单元格:您只需将要开始查看的下一个单元格的编号传递给 find_next 即可;您可以通过调用 fill_next(0) 来开始整个过程。由于您有 9 个单元格,因此单元格编号为 0 到 8。如果要将正方形存储在 2D 数组中,只需使用 num%3 和 num/3 作为索引。
只需给您几行代码就可以更容易地描述这一点,但您说您不希望这样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)