Один номер появляется только один раз?

Поэтому я пытался написать функцию, для которой будут генерироваться числа для головоломки судоку. Вот как это выглядит.

Я как бы заблудился в самой последней строке … Как я могу проверить, появляется ли одно число только в одной строке и одном столбце?

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.
}

}
}

0

Решение

Вы делаете это совершенно неправильно.

Вы должны просто заполнить судоку в соответствии с правилами, начиная с 1,

После того, как у вас есть действующее судоку, переключайте числа случайным образом, используя случайную перестановку.

Обратите внимание, что это довольно сложная проблема (если вы включаете фактическое поколение судоку, а не только заполненную доску), и вы, скорее всего, недооцениваете ее.

2

Другие решения

Я бы добавил каждое случайное число в вектор. Затем после того, как сгенерировано каждое число, выполните итерацию по всем элементам вектора, чтобы проверить значение, которое уже существует.

0

По вопросам рекламы [email protected]