26 August 2009

recursion

// 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;
  }