Поэтому я пытался написать функцию, для которой будут генерироваться числа для головоломки судоку. Вот как это выглядит.
Я как бы заблудился в самой последней строке … Как я могу проверить, появляется ли одно число только в одной строке и одном столбце?
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
,
После того, как у вас есть действующее судоку, переключайте числа случайным образом, используя случайную перестановку.
Обратите внимание, что это довольно сложная проблема (если вы включаете фактическое поколение судоку, а не только заполненную доску), и вы, скорее всего, недооцениваете ее.
Я бы добавил каждое случайное число в вектор. Затем после того, как сгенерировано каждое число, выполните итерацию по всем элементам вектора, чтобы проверить значение, которое уже существует.