我正在用c ++创建一个交互式数独板。每当用户更改值时,我想检查电路板是否完成。当电路板上的所有空间都填满时,电路板将完成。我关于如何做到这一点的两个想法是:
创建一个包含已填充空格量的私有数据成员。要检查电路板是否完成,我只需要检查该值是否等于boardLength ^ 2
创建一个遍历棋盘的成员函数,当找到空格时返回false,如果它通过棋盘而没有找到任何空格则返回true
这是一个偏好问题,还是有更多接受/正确的方法来做到这一点?
答案 0 :(得分:9)
这是一个偏好问题,还是有更多接受/正确的方法来做到这一点?
是一种可接受且正确的优化方式,通常是:
在确定实际问题时,在实际需要时优化速度或内存占用。您项目的独特要求将决定什么构成“问题”。
否则,请优化代码以提高可读性和可维护性。
在您的特定情况下:
无论您选择哪种算法,您的检查都会很快发生,以至于您将无法对其进行测量,并且用户永远不会注意到简单解决方案与“快速”解决方案。任何优化此操作的尝试(以复杂性或可读性或编写代码所花费的时间为代价)都是糟糕的权衡。
使用最简单的解决方案。完成后,如果用户输入有明显的延迟,并且您可以确认它是由对电路板完成率的低效检查引起的,请考虑改进算法的方法。