求这个问题的算法?

来源:百度知道 编辑:UC知道 时间:2024/09/22 06:57:48
6*6的格子,每个格子填入一个数(1~9),使每一行和每一列的6个数之和都是30。1~9每一个均出现四次。其中某些格子的数已知。

你把6*6的格子看成一个3*3的矩阵大矩阵,矩阵的每一个元素是2*2的小矩阵
把那36个数字拼成以下9个小矩阵:
1 9
9 1
------
2 8
8 2
------
3 7
7 3
------
4 6
6 4
------
以上每个矩阵拼两个。
5 5
5 5
一个。

把这九个矩阵是完全等价的,把他们按任意次序往那个3*3的大矩阵里填就能得到正确答案,比如:
9 1 9 1 8 2
1 9 1 9 2 8
8 2 7 3 7 3
2 8 3 7 3 7
6 4 6 4 5 5
4 6 4 6 5 5

搜索
记录每行每列的当前和,每个数字已使用的次数,缩小可填数的取值范围