初学者一个。。代码如下:
#include <iostream>
using namespace std;
void eight_queens(int a[])
{
int i,j;
int count=0;
int b[8];
bool flag;
for(a[0]=0;a[0]<8;a[0]++)
for(a[1]=0;a[1]<8;a[1]++)
for(a[2]=0;a[2]<7;a[2]++)
for(a[3]=0;a[3]<8;a[3]++)
for(a[4]=0;a[4]<8;a[4]++)
for(a[5]=0;a[5]<8;a[5]++)
for(a[6]=0;a[6]<8;a[6]++)
for(a[7]=0;a[7]<8;a[7]++)
{
flag=true;
for (i=0;i<7;i++)
for(j=i+1;j<8;j++)
if (a[j]==a[i]) flag=false; //判断竖线
for (i=0;i<8;i++)
b[i]=a[i]-i;
for (i=0;i<7;i++)
for(j=i+1;j<8;j++)
if (b[j]==b[i]) flag=false; //判断主斜线
for (i=0;i<8;i++)
b[i]=a[i]+i;
for (i=0;i<7;i++)
for(j=i+1;j<8;j++)
if (b[j]==b[i]) flag=false; //判断次斜线
if (flag)
{
for (int i=0;i<8;i++)
{
for (int j=0;j<8;j++)
if (j!=a[i]) cout << "□"; else cout << "※";
cout << endl;
}
count++;
cout << endl;
}
}
cout << count << endl;
}
int main()
{
int a[8];
eight_queens(a);
return 0;
}
#include <iostream>
using namespace std;
void eight_queens(int a[])
{
int i,j;
int count=0;
int b[8];
bool flag;
for(a[0]=0;a[0]<8;a[0]++)
for(a[1]=0;a[1]<8;a[1]++)
for(a[2]=0;a[2]<7;a[2]++)
for(a[3]=0;a[3]<8;a[3]++)
for(a[4]=0;a[4]<8;a[4]++)
for(a[5]=0;a[5]<8;a[5]++)
for(a[6]=0;a[6]<8;a[6]++)
for(a[7]=0;a[7]<8;a[7]++)
{
flag=true;
for (i=0;i<7;i++)
for(j=i+1;j<8;j++)
if (a[j]==a[i]) flag=false; //判断竖线
for (i=0;i<8;i++)
b[i]=a[i]-i;
for (i=0;i<7;i++)
for(j=i+1;j<8;j++)
if (b[j]==b[i]) flag=false; //判断主斜线
for (i=0;i<8;i++)
b[i]=a[i]+i;
for (i=0;i<7;i++)
for(j=i+1;j<8;j++)
if (b[j]==b[i]) flag=false; //判断次斜线
if (flag)
{
for (int i=0;i<8;i++)
{
for (int j=0;j<8;j++)
if (j!=a[i]) cout << "□"; else cout << "※";
cout << endl;
}
count++;
cout << endl;
}
}
cout << count << endl;
}
int main()
{
int a[8];
eight_queens(a);
return 0;
}