ACcoders Problem 2058 题解 |
您所在的位置:网站首页 › accoders › ACcoders Problem 2058 题解 |
题意
我们先考虑爆搜,其中引入两个参数,分别为当前没填的格子的数量 c n t cnt cnt 和最终的得分 s c o r e score score。如果 c n t cnt cnt 为 0 0 0,那么就更新答案,与 s c o r e score score 取最大值。每次枚举没填过的数值,然后填入数独,进行下一轮搜索,之后回溯。这样一定会超时,我们考虑剪枝。 剪枝1:顺序剪枝 每次我们都找出没填的选择分支最少(行列九宫格没填的数最少)的空格来填,使其搜索范围缩小,优化时间复杂度。 剪枝2:二进制优化 我们先构造出来三个数组 r o w row row、 c o l col col 和 c e l l cell cell,表示当前行列九宫格内所表示的状态,填过数表示 0 0 0,没填过表示 1 1 1(下标为填的数的数值)。因为一开始都是没有被填过,所以为 111111111 111111111 111111111,即为 ( 1 < < 9 ) − 1 (1 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |