Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <vector>
- using namespace std;
- // http://i.imgur.com/xk5XCCl.png
- typedef vector<vector<int> > sudoku;
- /*
- bool evaluar(sudoku &matriz){
- for(int s=0;s<9;s++){
- int a=0,b=0;
- for(int z=0;z<9;z++){
- a+=matriz[s][z];
- b+=matriz[z][s];
- }
- if (a!=45) return false ;
- if (b!=45) return false ;}
- return true;
- }
- */
- bool posVacia(sudoku &s, int &fila, int &col)
- {
- for (fila = 0; fila < 9; fila++)
- for (col = 0; col < 9; col++)
- if (s[fila][col] == 0)
- return true;
- return false;
- }
- bool estaEnFila(sudoku &s, int fila, int num)
- {
- for (int col = 0; col < 9; col++)
- if (s[fila][col] == num)
- return true;
- return false;
- }
- bool estaEnCol(sudoku &s, int col, int num)
- {
- for (int fila = 0; fila < 9; fila++)
- if (s[fila][col] == num)
- return true;
- return false;
- }
- bool estaEnBox(sudoku &s, int empiezaFila, int empiezaCol, int num)
- {
- for (int fila = 0; fila < 3; fila++)
- for (int col = 0; col < 3; col++)
- if (s[fila+empiezaFila][col+empiezaCol] == num)
- return true;
- return false;
- }
- bool valido(sudoku &s, int fila, int col, int num)
- {
- return !estaEnFila(s, fila, num) &&
- !estaEnCol(s, col, num) &&
- !estaEnBox(s, fila - fila%3 , col - col%3, num)&&
- s[fila][col]==0;
- }
- bool resolver(sudoku &s){
- int fila, col;
- if (!posVacia(s, fila, col))
- return true;
- for (int num = 1; num <= 9; num++)
- {
- if (valido(s, fila, col, num))
- {
- s[fila][col] = num;
- if (resolver(s))
- return true;
- s[fila][col] = 0;
- }
- }
- return false;
- }
- sudoku leer(){
- sudoku s (9, vector<int> (9));
- for(int i = 0; i<9;++i){
- for(int j = 0; j<9; ++j){
- scanf("%d", &s[i][j]);
- }
- }
- return s;
- }
- void escribir(sudoku &s){
- for(int i = 0; i<9;++i){
- for(int j = 0; j<9; ++j){
- printf("%d ", s[i][j]);
- }
- printf("\n");
- }
- }
- int main(){
- sudoku s = leer();
- if(resolver(s)) escribir(s);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement