Sudoku programacion
Enviado por Mr. M. • 22 de Febrero de 2018 • Práctica o problema • 759 Palabras (4 Páginas) • 113 Visitas
#include <stdio.h>
#define M 9
#define N 9
void imprime(int sudoku[M][N]);
int hacer_recorrido(int sudoku[M][N]);
int verificar(int sudoku[M][N],int var,int a,int b);
void respuesta(int recibido);
int main()
{
int res;
int sudoku[M][N]={
{9,7,6,1,3,5,8,4,2},
{8,4,1,7,6,2,5,9,3},
{5,2,3,9,8,4,6,1,7},
{6,9,5,8,7,1,2,3,4},
{3,8,4,2,5,9,7,6,1},
{2,1,7,6,4,3,9,8,5},
{1,3,9,5,2,8,4,7,6},
{7,5,8,4,1,6,3,2,9},
{4,6,2,3,9,7,1,5,8}
};
imprime(sudoku);
res=hacer_recorrido(sudoku);
respuesta(res);
return 0;
}
void respuesta(int recibido)
{
if(recibido==0)
{
printf("\nSudoku no resuelto\n");
}if(recibido==1)
{
printf("\nSudoku resuelto\n");
}
}
int hacer_recorrido(int sudoku[M][N])
{
int i,j,dato=0,resp=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
dato=sudoku[i][j];
resp=verificar(sudoku,dato,i,j);
if(resp==0)
{
j=N+1;
}
}
if(resp==0)
{
i=M+1;
}
}
return resp;
}
int verificar(int sudoku[M][N],int var,int a,int b)
{
int i,j,comparativo=0,k=0,l=0;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(sudoku[a][j]==var)
{
k++;
}
if(sudoku[j][b]==var)
{
l++;
}
}
}
if(k==9 && l==9)
{
return 1;
}else {
return 0;
}
}
void imprime(int sudoku[M][N])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%i ",sudoku[i][j]);
}
printf("\n");
}
...