实现了第一组满足条件数据的输出
#include <cstdio>
#include <string.h>
#include <cstdlib>
#include <cmath>
#include <ctgmath>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int a[8] = {0};
int b[15] = {0};
int c[15] = {0};
int j = 0;
vector<int> m;
vector<int>::iterator it;
for(int i = 0; i <= 7; i ++){
for(j = 0; j <= 7; j ++){
if((a[j]==0) && (b[i+j]==0) && (c[i-j+7]==0) ){//这一点可以有皇后
m.push_back(j);
a[j]=1;
b[i+j]=1;
c[i-j+7]=1;
break;
}
}
//如果走完了还没有位置
t1: if(j == 8){
i--;
int temp = m[i];
//删除原来皇后的记录
a[temp]=0;
b[i+temp]=0;
c[i-temp+7]=0;
m.pop_back();
for(j = temp +1; j <= 7; j ++){
if((a[j]==0) && (b[i+j]==0) && (c[i-j+7]==0) ){//这一点可以有皇后
m.push_back(j);
a[j]=1;
b[i+j]=1;
c[i-j+7]=1;
break;
}
}
if(j == 8) goto t1;
}
}
for(it = m.begin();it!=m.end();it++) cout<< *it <<endl;
return 0;
}