c++求解8皇后问题 - 爱问答

(爱问答)

c++求解8皇后问题

注意:如果可以吧n皇后问题也解一下!!!
问题 A: 【提高】8皇后问题
时间限制: 1.000 Sec  内存限制: 32 MB提交: 2550  解决: 1362[提交] [状态] [报告] [命题人:][下载数据: ?]题目描述
 在一个8*8的棋盘上放置8个皇后,且使得每两个之间不能互相攻击,也就是使得每两个不在同一行,同一列和同一斜角线上。以下为8皇后问题的一个解:
输入

输出
 若干行,每行8个数a_i(i:=1..8),表示第i行的皇后放置在第a_i列。一行表示一个解。
样例
输入  复制输出  复制
以下尽力解:

问题 J: 【基础】N皇后问题
时间限制: 1.000 Sec  内存限制: 16 MB提交: 3748  解决: 1111[提交] [状态] [报告] [命题人:][下载数据: ?]题目描述
在一个N*N的棋盘上放置N个皇后,且使得每两个之间不能互相攻击,也就是使得每两个不在同一行,同一列和同一斜角线上。以下为N=8时问题的一个解:
 
输入
一个整数N(4<=N<=10)
输出
N皇后的所有解。
样例
输入  复制4输出  复制4   Q    
3       Q
2 Q      
1     Q  
  a b c d
4     Q  
3 Q      
2       Q
1   Q    
  a b c d提示
输出格式说明: a的场宽为4,其它数字和字母的场宽均为2,两种解法之间空一行。最后一种解法后没有多余空行。每一个Q后面没有空格。

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(" ");
   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(" ");
   }
   printf("   a");
   for(i=1;i<n;i++)
       printf("%2c",'a'+i);
   printf(" ");
 //  printf("   a b c d ");
}
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;
}

测试结果

c++求解8皇后问题

而第一个问题,可以在第二个做简单修改

下一篇:电脑桌面壁纸高清大图

上一篇:if函数多个并列条件or

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?