用c ++检查数独谜题的有效性

时间:2011-12-01 01:51:10

标签: c++ arrays

我正在编写一个程序,它使用一组数字三元组,并使用每个三元组中的前两个数字来索引一个二维数组,最后一个作为实际数字进入拼图创建一个数独谜题。该程序的一部分是验证,以确保拼图中的每个数字不会在同一行,列或3x3块中重复。我已经编写了代码来检查行和列,但我不知道如何处理3x3块部分。我可以想到几种可行的方法(例如设置第三个数组维度并根据数组中的位置标记每个数字),但我能想到的一切都是一个漫长而痛苦的过程。是否有一种更简单的方法可以做到这一点,我没有想过?

1 个答案:

答案 0 :(得分:0)

一种简单的方法,以伪代码:

  • 对于每个3x3块(x ,y ∈{0,3,6}):

    • 对于块内的每个单元格(x 1 ,y 1 ∈{0,1,2}):

      • 对于块内的每个其他单元格(x 2 ,y 2 ∈{0,1,2}):

        • 如果(x 1 ,y 1 )的值等于(x 2 ,y 的值2 ),x 1 ≠x 2 或y 1 ≠y 2

          • 该区块无效。

除非证明无效,否则该块有效。