8皇后问题,任何一本数据结构及网上教程都可以找到完整的程序而N皇后问题相对就复杂些了,以下是我OJ可的程序参考#include <iostream>#include <cstdio>using namespace std;int n;int x[1001];long sum,out;void OutPut(void){  int i, j;  if (sum!=1)    printf("\n");  for(i = 1; i <= n; i++)  {    printf("%2d",n-i+1);    for(j = 1; j <= n; j++)      if(x[i] == j)        printf(" Q");      else        printf(" ");    printf("\n");  }  printf("  a");  for(i=1;i<n;i++)    printf("%2c",'a'+i);  printf("\n"); // printf("  a b c d\n");}int Place(int k){  int j;  for(j = 1; j < k; j++)    if((abs(k - j) == abs(x[j] - x[k])) || (x[j] == x[k]))      return 0;  return 1;}void BackTrack(int t){  int i;  if(t > n)  {    sum++;    OutPut();  }  else    for(i = 1; i <= n; i++)    {      x[t] = i;      if(Place(t))        BackTrack(t + 1);    }}int main(){  int i;  scanf("%d", &n);  sum = out=0;  for(i = 0; i <= n; i++)    x[i] = 0;  BackTrack(1);  return 0;}测试结果而第一个问题,可以在第二个做简单修改