【发布时间】:2014-03-02 21:48:12
【问题描述】:
编写 C++ backtracking with CSP algorithm 程序,到 solve a Sudoku puzzle。
变量映射到 9X9 网格(81 个变量)so the program is row/column oriented。
为了使回溯更智能,程序需要跟踪 9X9 网格上的每个变量仍然可以接受的可能值。
(81 个变量中的每一个的数字列表为 1 - 9,并且不断变化。)
我最初的想法是使用 2D 数组向量 - 映射到每个变量。
例如,vector[1][5] 将包含 variable[1][5] 的所有可能值。
在效率和易用性方面 - 这是正确的容器还是有其他更好的容器?
【问题讨论】:
-
对这个任务使用向量听起来有点过分了。如果您只在数字 1-9 之后,为什么不使用
vector[1][5]作为位图?换句话说,将vector设为一个二维整数数组,并使用每个位置作为位图来跟踪您尝试过/需要尝试的数字。 -
@filipe-goncalves:好吧,这听起来是一种有效的方法,所以如果我想从变量域中删除 5,我会 AND 它是 int 值等于 111101111 的域值?
-
看我的回答,我展示了一个可能的实现。
标签: c++ arrays windows oop vector