de un tipico sudoku matamatico*/
#include
#include
#include
#include
ostream& operator<<(ostream& out, vector
{
for(int i=0; i
return out;
}
class Sudoku
{
vector
bool valido(char c, int x, int y)
{
for(int i=0; i<4; ++i)
{
if(tablero[x][i]==c)
return false;
if(tablero[i][y]==c)
return false;
}
int x1;
int y1;
if(x==0 || x==1)
x1=0;
else
x1=2;
if(y==0 || y==1)
y1=0;
else
y1=2;
for(int i=x1; i
for(int j=y1; j
if(tablero[i][j]==c)
return false;
}
}
return true;
}
public:
Sudoku(vector
void solucionar(int n)
{
if(n==16)
{
cout << tablero << endl;
return;
}
else if(tablero[n/4][n%4]!='0')
{
solucionar(n+1);
}
else
{
for(char x='1'; x<='4'; ++x)
{
if(valido(x,n/4,n%4))
{
tablero[n/4][n%4] = x;
solucionar(n+1);
tablero[n/4][n%4] = '0';
}
}
}
}
};
int main(int argc, char**argv)
{
ifstream in("sudoku.in");
int casos;
in>> casos;
for(int veces=1; veces<=casos; ++veces)
{
vector
for(int i=0; i<16; ++i)
{
in>> tablero[i/4][i%4];
}
cout << tablero<< endl;
Sudoku sudoku(tablero);
sudoku.solucionar(0);
}
getchar();
return 0;
}
5 comentarios:
huy que chevere un codigo nuevo,muy interesante.
al fin se como se debe jugar, gracias
Como es la estrategia del juego?
me dicen porfa....
y esto que esssss haaaaa
me parece interezante la programacion
Publicar un comentario