如题,翻到了一个以前的代码,发现是刚学c时帮同学解决八皇后问题的代码文件,足足两百行,放出来纪念一下当初傻傻的自己吧哈哈。
话不多说,放代码:
#include<stdio.h>
int p(int s[8][8],int x,int y)
{
int i = 0, j = 0,a=0;
for (a = 0; a == 0;)
{
for (int j = 0; j < 8; j++)
{
if (j == y)
continue;
if (s[x][y] + s[x][j] == 1)
continue;
else
{
a = 1;
break;
}
}
if (a == 1)
continue;
for (int i = 0; i < 8; i++)
{
if (i == x)
continue;
if (s[x][y] + s[i][y] == 1)
continue;
else
{
a = 1;
break;
}
}
if (a == 1)
continue;
for (int m = 1; m < 8; m++)
{
i = x - m, j = y - m;
for (int z = 0; z < 2; z++)
{
if (i < 0 || i>7)
{
i=i+m+m;
continue;
}
for (int c = 0; c < 2; c++)
{
if (j < 0 || j>7)
{
j=j+m+m;
continue;
}
if (s[x][y] + s[i][j] == 1)
{
j = j + m + m;
continue;
}
else
{
a = 1;
break;
}
}
i=i+m+m;
if (a == 1)
break;
}
if (a == 1)
break;
}
break;
}
return a;
}
int main()
{
int w[8][8] ,num=0,q1,q2=7,q3;
for (int n = 0; n < 8; n++)
{
for (int i = 0; i < 8; i++)
for (int j = 0; j < 8; j++)
w[i][j] = 0;
//printf("2\n");
w[0][n] = 1;
for (int i1 = 0; i1 < 8; i1++)
{
w[1][i1] = 1;
if (p(w, 1, i1) == 1)
{
/* for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
printf("%d", w[i][j]);
printf("\n");
}
printf("%d\n",3);*/
w[1][i1] = 0;
continue;
}
else
{
for (int i2 = 0; i2 < 8; i2++)
{
w[2][i2] = 1;
if (p(w, 2, i2) == 1)
{
// printf("5");
w[2][i2] = 0;
continue;
}
else
{
for (int i3 = 0; i3 < 8; i3++)
{
w[3][i3] = 1;
if (p(w, 3, i3) == 1)
{
w[3][i3] = 0;
continue;
}
else
{
for (int i4 = 0; i4 < 8; i4++)
{
w[4][i4] = 1;
if (p(w, 4, i4) == 1)
{
w[4][i4] = 0;
continue;
}
else
{
for (int i5 = 0; i5 < 8; i5++)
{
w[5][i5] = 1;
if (p(w, 5, i5) == 1)
{
w[5][i5] = 0;
continue;
}
else
{
for (int i6 = 0; i6 < 8; i6++)
{
w[6][i6] = 1;
if (p(w, 6, i6) == 1)
{
w[6][i6] = 0;
continue;
}
else
{
for (int i7 = 0; i7 < 8; i7++)
{
w[7][i7] = 1;
if (p(w, 7, i7) == 1)
{
w[7][i7] = 0;
continue;
}
else
{
num = num + 1;
printf("%d\n", num);
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
printf("%d ", w[i][j]);
printf("\n");
}
w[7][i7] = 0;
}
}
w[6][i6] = 0;
}
}
w[5][i5] = 0;
}
}
w[4][i4] = 0;
}
}
w[3][i3] = 0;
}
}
w[2][i2] = 0;
}
}
w[1][i1] = 0;
}
}
w[0][n] = 0;
}
}