Brutal Force求解向量形式的数独

原题目出自:https://leetcode.com/problems/sudoku-solver


该题目是求解数独问题,而这个数独则用向量形式存储。本人曾经查过网上的一些代码,基本上都是用于解决二维数组形式的数独。于是本人结合之前参考的一些资料,设计出了向量形式数独的解法。与网上通用的解法相比,这种解法使用了暴力求解,代码上是轻松了不少,不过效率可能会相对低一些。


这里我用了两个函数:判断某个位置可以去什么数值的函数check(bool),以及判断去某个数后能否求解的函数place(bool)。判断哪些位置空缺以及判断哪些数能填进去是比较容易的过程,这里不再详述。算法里的递归步骤设计则相对繁琐一些,其重点在于:当通过之前的判断可选数函数确定了某个数后,需要将这个数代入该位置,然后再按照正常的步骤求解;当出现无法求解的情况时,则需要逐步向上一步还原,然后再用新的数代入求解。如此重复,直至所有的81个数都判断可以解为止。这种解法只能解出数独的一种解,但考虑到大多数的数独都只有唯一解,这种方法也算是比较可靠的。


以下是代码截图:


check函数部分,检查某个数是否可用。

Brutal Force求解向量形式的数独_第1张图片


place函数部分,用于执行递归求解。

Brutal Force求解向量形式的数独_第2张图片

你可能感兴趣的:(Brutal Force求解向量形式的数独)