Я занимаюсь с массивами и программирую программу проверки судоку. Я должен проверить сумму строк и столбцов матрицы 9x9.
Учитывая, что матрица равна 9x9, сумма каждой строки / столбец должен быть 45, чтобы судоку был действительным.
Самый простой способ - сделать что-то вроде этого:
/*example for rows*/
for(column=0;column<9;column++){
sum0=sum0+sudoku[0][column];
sum1=sum1+sudoku[1][column];
sum2=sum2+sudoku[2][column];
sum3=sum3+sudoku[3][column];
...
/*repeat for all 9 sums and then simply check if one of the sums is != from 45
Мне не нравится этот код, потому что он работает только для это 9x9 фиксированного размера судоку. Я пытаюсь связать индекс суммы с индексом строки; возможно, используя массив.
Например:
int sum[9];
for(column=0;column<9;column++){
sum[row]=sum[row]+sudoku[row][column]
Идея состоит в том, что до увеличения индекса строки все столбцы должны быть проверены, но я не могу понять, что l oop для этого. Кроме того, если после того, как все столбцы были проверены и сумма равна! = 45, нет необходимости проверять другие строки, так как судоку недопустимо.
Это можно сделать с помощью простого кода, подобного следующему:
if(sum[row]!=45){
fail_flag=1;
}
/*then stop the loop and return fail_flag*/
Является ли этот подход к проблеме правильным? Любое предложение о том, как я мог бы настроить l oop, я объяснил?