不过应该是其中的一个解。。。
恩 第二个 解
这个怎么样?
#include "stdafx.h"
#include"iostream.h"
#include"math.h"
void putIn(int);
int panDuan(int);
int columnRecord[8] = {0},n=0,map[8][8] = {0};
int main(int argc, char* argv[])
{
putIn(0);
cout<<"total is:"<<n<<endl;
return 0;
}
void putIn(int row)
{
int column,i,j;
if(row>7)
{
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if(map[i][j]==1)
cout<<"1 ";
else
cout<<"0 ";
cout<<endl;
}
n++;
cout<<"//////////////////////////////////////////////"<<endl;
}
else
{
for(column=0;column<8;column++)
{
columnRecord[row]=column;
if(panDuan(row))
{
map[row][columnRecord[row]]=1;
putIn(row+1);
map[row][columnRecord[row]]=0;
}
}
}
}
int panDuan (int row)
{
for(int i=0;i<row;i++)
if(columnRecord[row]==columnRecord[i] ||
abs(columnRecord[row]-columnRecord[i])==abs(row-i))
return 0;
return 1;
}