我在这里阅读了一个问题:C#中的数独算法
其中发布的解决方案之一是这段代码。
public static bool IsValid(int[] values) {
int flag = 0;
foreach (int value in values) {
if (value != 0) {
int bit = 1 << value;
if ((flag & bit) != 0) return false;
flag |= bit;
}
}
return true;
}
这个想法是检测值数组中的重复项;但我对自己不知道的东西感到很无助。有人能给我解释一下吗?
编辑:谢谢大家。有这么多好的回答,我不知道该选哪一个。现在我完全明白了。
values
的总和是否等于唯一可能数字的总和(对于9x9游戏,它应该是45)在高级语言中会更有效率,不是吗? - Anthony