输出异常。待检查。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
#include<cstdio>
#include<map>
#include<string>
#include<iostream>
#include<algorithm>
#include<set>
#include<vector>
using namespace std;
int ff;
void zw(vector<vector<int>>& gj,int n,int x,int y)
{
const int dx[8] = { -1,-1,-1,0,0,1,1,1 };
const int dy[8] = { -1,0,1,-1,1,-1,0,1 };
int i;
int j;
int xx, yy;
for (i = 0;i < 8;i++)
{
for (j = 1;j < n;j++)
{
xx = x + dx[i] * j;
yy = y + dy[i] * j;
if((0<=xx&&xx<n)&&(0 <= yy && yy < n))
gj[xx][yy] = 1;
}
}
}
void hhfz(vector<vector<int>> &gj,vector<vector<char>> &hh,int n,int k,vector<vector<char>> &result)
{
if( k == n);
{
result = hh;
ff = ff + 1;
for (vector<vector<char>>::iterator it = result.begin();it < result.end();it++)
{
for (vector<char>::iterator itt = (*it).begin();itt < (*it).end();itt++)
cout << *itt << ' ';
cout << endl;
}
return;
}
for (int i = 0;i < n;i++)
{
if (gj[k][i] == 0)
{
zw(gj, n, k, i);
vector<vector<int>>temp = gj;
hh[k][i] = 'Q';
hhfz(gj, hh, n, k + 1,result);
gj = temp;
hh[k][i] = '.';
}
}
}
int main()
{
int n;
vector<vector<int>> gj={};
vector<vector<char>> hh={};
vector<vector<char>> result={};
cin >> n;
hhfz(gj, hh, n, 0, result);
return 0;
}