No older revisions available
No older revisions available
~cpp
#include <iostream>
using namespace std;
const int Max = 8;
int check, cnt;
int ar[Max][Max];
void block(int, int);
void find(int, int);
void main()
{
int i, j, k;
int cnt = 0;
for (i = 0; i < Max; i++)
{
for (j = 0; j < Max; j++)
for (k = 0; k < Max; k++)
ar[j][k] = -1;
check = 0;
find(0, i);
}
}
void block(int row, int col)
{
int crow, ccol;
int i;
for (i = row + 1; i < Max; i++)
ar[i][col] = 0;
crow = row;
ccol = col;
while (++crow < Max && --ccol >= 0)
ar[crow][ccol] = 0;
crow = row;
ccol = col;
while (++crow < Max && ++ccol < Max)
ar[crow][ccol] = 0;
}
void find(int row, int col)
{
int i, j, k;
int temp[Max][Max];
int tcheck;
if (ar[row][col] == 0)
return;
else
{
ar[row][col] = 1;
block(row, col);
check++;
if (check == Max)
{
cout << ++cnt << " : ";
for (j = 0; j < Max; j++)
for (k = 0; k < Max; k++)
if (ar[j][k] == 1)
cout << k + 1 << " ";
cout << endl;
if (cnt % 24 == 0)
cin.get();
return;
}
for (i = 0; i < Max; i++)
{
for (j = 0; j < Max; j++)
for (k = 0; k < Max; k++)
temp[j][k] = ar[j][k];
tcheck = check;
find(row + 1, i);
for (j = 0; j < Max; j++)
for (k = 0; k < Max; k++)
ar[j][k] = temp[j][k];
check = tcheck;
}
}
}