int main(int argc, char *argv[]) { int multi_flag, sols = 0; char sudoku_table[250]; int sudoku_sols[50][81]; SudokuSolver sudoku; fgets(sudoku_table, 250, stdin); if (input_check(sudoku_table)) return 0; sudoku.start(sudoku_table); if (sudoku.invalid_check()) return 0; sudoku.optimize1(); if (sudoku.solve()) { sudoku.print(); for (int j = 0; j < 81; j++) sudoku_sols[sols][j] = sudoku.solution[j]; sols++; while (1) { sudoku.clear(); sudoku.optimize1(); sudoku.solve(); for (int i = 0; i < sols; i++) { multi_flag = 0; for (int j = 0; j < 81; j++) { if (sudoku_sols[i][j] == sudoku.solution[j]) multi_flag++; } if (multi_flag == 81) return 0; } sudoku.print(); for (int j = 0; j < 81; j++) sudoku_sols[sols][j] = sudoku.solution[j]; sols++; } } return 0; } // main