面试问题:为Sudoku创建面向对象的设计

jav*_*Man 4 java oop object-oriented-analysis 2d-games

我回答说我将有一个二维阵列.

然后我将有3个功能

  • 一检查水平状况.
  • 另一个检查垂直状态的功能
  • 另一个检查3*3阻止条件.

但是他不满意,任何人都能对这个问题给出一个好的答案吗?

我发现这个堆栈溢出链接与我的问题有关. 编程设计帮助 - 如何构建数独求解器程序?.

但是我想要一个适当的面向对象设计(比如应该是类,继承和其他细节),这些都是面试官对我的期望.

cor*_*iKa 5

对我而言,您的设计始于"地区"课程.然后,您可以将其扩展为"水平区域""垂直区域"和"方形区域"作为三种类型的区域.编辑:经过进一步考虑,你不需要做出这种区分,除非它是出于显示目的......算法上它将是相同的.

然后,您可以制作2d"元素"数组,并将元素适当地添加到您的区域,从而为您的计算提供网络.您的元素包含潜在值列表,您的区域负责删除这些潜在值.找到值后,它会触发它所属的区域,以从中删除潜在值.