我正在浏览这篇文章 ( https://spin.atomicobject.com/2012/06/18/solving-sudoku-in-c-with-recursive-backtracking/),解释用 C 语言解决数独谜题的回溯方法,我有几个关于 if 语句中的条件的问题。
他使用 if(puzzle[row][column]),我不确定它在检查什么。如果该位置存在数字,它会继续吗?为此,我会考虑使用 != null 来检查它是否为空
他还在 if 语句中使用函数调用:if(isValid(nextNum, puzzle, row, column) 这是否意味着如果函数成功,它会执行 if 中的内容?
最佳答案
因为,在 C 中,int
表达式可以用来代替 bool 表达式,其中 0 为假,其他为真,if(puzzle[row][column])
是一种惯用的写作方式
if(puzzle[row][column] != 0)
我更喜欢后者,因为前者似乎会让不熟悉该成语的人感到困惑。
If a number exists in that position it will continue? For this I would have thought to use != null
单元格中的值是数字 - 实际上是 int
。他使用零作为“尚未填写”的约定。如果数组中的值是指针,我会同意 if(puzzle[row][column] != NULL)
但它们不是指针。
关于if 语句中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55149038/