所以我一直在尝试写一个函数,为数独游戏生成数字。这就是它的样子。
我读到最后一行有点迷路了…我如何检查一个数字是否只出现在一行和一列中?
void generator (int row, int col){
for (int i=0; i<9; i++){
int randNum= (1+rand()%9);
for (int j=0; j<i; j++){
A[i][j]=randNum;
//check if one number only appears once.
}
}
}
你完全做错了。
您应该简单地根据规则填写数独,从1
开始。
当你有一个有效的数独后,使用随机排列随机切换数字。
请注意,这是一个相当复杂的问题(如果您包括实际的数独生成,而不仅仅是填满的棋盘),您很可能低估了它。
我会将每个随机数加到一个向量中。然后,在生成每个数字之后,遍历vector的所有成员,检查是否存在一个已经存在的值。