我正在浏览这篇文章(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
中,可以使用表达式来代替布尔表达式,其中0为假,其他任何都是真的,if(puzzle[row][column])
是一种惯用的写作方式
if(puzzle[row][column] != 0)
我更喜欢后者,因为前者似乎混淆了那些不熟悉成语的人。
如果该位置存在一个数字,它会继续吗?为此,我原本想用!= null
单元格中的值实际上是数字 - int
s。他使用零作为“尚未填补”的惯例。如果数组中的值是指针,我会同意,if(puzzle[row][column] != NULL)
但它们不是指针。
在C条件中,0为假,任何非零都为真。 puzzle
是int
的二维阵列。如果int
为0,则条件求值为false。如果int
不为零,则条件求值为真。