Exemplo n.º 1
0
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