Algoritmo de resolución de sudokus
Los amigos que toman el metro en Shanghai saben que el periódico Times, que es gratuito en las estaciones de metro de Shanghai, a menudo publica el juego de rompecabezas Sudoku. Si usas papel y lápiz para calcularlo manualmente, me temo. Te llevará mucho tiempo. A veces es posible que no puedas resolverlo, debes estar muy deprimido, ¿verdad? También hay algunas calculadoras para resolver juegos de Sudoku en Internet, pero creo que en lugar de usarlas directamente, ¡podría investigar y compilar una yo mismo! Por lo tanto, tomó aproximadamente más de un mes escribir un software de resolución de Sudoku. Dado que no utiliza el llamado algoritmo exhaustivo, si el juego de Sudoku no tiene una solución única, solo proporcionará la primera solución encontrada. ¡Tenga la seguridad de que es correcto! Permítanme describir la esencia de este algoritmo en detalle
Defina una clase para representar cada número en el juego de Sudoku. Tiene los siguientes atributos #región atributo /// resumengt; / lt; /summarygt; public int { set { if (UnFilled) { _num = value; _unfilled = false; Opciones Clear(); SetNumEvent(this); ; /// Coordenadas de fila /// lt; / resumengt; public int Xpos { set { _x = valor } get { return _x } } /// lt; resumengt; public int Ypos { set { _y = valor } get { return _y; } } /// lt; resumengt; /// Si la marca se ha completado /// lt; public bool UnFilled { get { return _unfilled; } } /// lt; resumengt; /// Lista de candidatos /// lt; public Listlt; intgt; set { _choices = valor; p>
En la clase principal de solución, diseñe dicho conjunto de algoritmos de acuerdo con las reglas del juego. Después de establecer un cierto valor, todos los números en la misma fila o columna y en los mismos nueve palacios. se eliminará de la secuencia candidata. El número en sí. Los números que aparecen en el juego de Sudoku son números conocidos. Sin embargo, debemos completar los números desconocidos antes de intentar resolverlos. , necesitamos hacer una copia de seguridad de la matriz de matriz inicializada en caso de que la solución de prueba anterior falle. Reanudar y realizar la siguiente solución de prueba hasta que la solución de prueba sea exitosa.
El algoritmo en sí no parece demasiado complicado, pero involucra. un problema de recorrido y reversión, por lo que debes prestarle atención al programar
Ahora permíteme presentarte brevemente el funcionamiento y el uso de este software de resolución de Sudoku
En términos generales, el software es relativamente sencillo de operar, pero como solo quiero usarlo yo mismo, no tengo un menú ni un documento de ayuda diseñado. Al ingresar los datos iniciales, los usuarios pueden usar las teclas arriba, abajo. teclas de flecha izquierda y derecha o ASDF para omitir. Si el número es incorrecto, pueden presionar la tecla Retroceso o Eliminar para realizar cambios antes de presionar el botón OK. Una vez que presione el botón OK, debe presionar F para borrarlo. y vuelva a ingresarla
Dirección de descarga del software
Dirección de descarga del código fuente
Dirección lishixinzhi/Article/program/net/201311/13980