// Suduku Algorithm
#include <iostream>
#include <iomanip>
void FillAll();
void Fslot(int,int);
bool checkAll();
bool row(int);
bool col(int);
using namespace std;
int T[9][9];
int main ()
{
FillAll();
if(checkAll())
cout << "YES..DONE\n";
for (int i=0; i<9; i++)
{for (int j=0; j<9; j++)
cout << setw(3) << T[i][j];
cout << endl;}
system ("pause");
return 0;
}
void FillAll()
{ for (int i=0; i<9; i++)
for (int j=0; j<9; j++)
Fslot(i,j);
}
void Fslot(int m, int n)
{ int x = 0;
while(true){
x++;
if ((x!=T[m][0])&&(x!=T[m][1])&&(x!=T[m][2])&&(x!=T[m][3])&&(x!=T[m][4])&&(x!=T[m][5])&&(x!=T[m][6])&&(x!=T[m][7])&&(x!=T[m][8])&&(x!=T[0][n])&&(x!=T[1][n])&&(x!=T[2][n])&&(x!=T[3][n])&&(x!=T[4][n])&&(x!=T[5][n])&&(x!=T[6][n])&&(x!=T[7][n])&&(x!=T[8][n]))
break; }
T[m][n] = x;
}
///////////////////////////////////////////////////
// Checking Class
bool checkAll()
{ for (int z=0; z<9; z++)
{ if (!row(z))
return false;
else if (!col(z))
return false;
}
return true;}
bool row(int m)
{ int sum = 0;
for ( int i = 0; i < 9; i++ )
sum = sum + T[m][i];
if (sum == 45)
return true;
else
return false;
}
bool col(int n)
{ int sum = 0;
for ( int i = 0; i < 9; i++ )
sum = sum + T[i][n];
if (sum == 45)
return true;
else
return false;
}