我有一个9 x 9矩阵。 (想想suduko)。
4 2 1 6 8 1 8 5 8 3 1 5 8 1 1 7 5 8 1 1 4 0 5 6 7 0 4 6 2 5 5 4 4 8 1 2 6 8 8 2 8 1 6 3 5 8 4 2 6 4 7 4 1 1 1 3 5 3 8 8 5 2 2 …
Python中常见的模式是使用a 字典 来图:
qmap = { 1: (0, 3), 2: (3, 6), 3: (6, 9), } print qmap.get(qnum, (0, 0))
我确信C#支持类似的东西。
对于一般解决方案(即:NxN网格),我会使用一些数学(你需要模运算符)。
如果您总是使用9x9数独网格,那么您可以预先计算答案并将它们粘贴在地图或数组中。
当然,您可以将这些想法结合起来并在init()函数中预先计算答案,然后将它们存储在地图中。
除非我遗漏了什么,为什么不做数学呢?所有的拳头,只有商店 rowBegin 和 colBegin 。
rowBegin
colBegin
现在,只需发出:
rowBegin = (rnum-1)*3 colBegin = (qnum-1)*3
这映射1 - > 0,2 - > 3,和3-> 6。
现在,你循环 colBegin 至 colBegin + 3 ,和 rowBegin 至 rowBegin + 3 。您的默认行为真的有必要吗?如果是,特殊情况时 rnum < 1 || rnum > 3 和 qnum < 1 || qnum > 3
colBegin + 3
rowBegin + 3
rnum < 1 || rnum > 3
qnum < 1 || qnum > 3