鱼C论坛

 找回密码
 立即注册
查看: 2233|回复: 3

一个八皇后的问题(搜索回溯),跪求大神指出错误!

[复制链接]
发表于 2018-8-12 19:03:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
理论答案应该有92种!我的只有2种,不懂哪里错了!












  1. #include<iostream>
  2. using namespace std;
  3. int sum, a[8][8];
  4. int pd(int x,int y )  // 判断x行y列是否可以放皇后
  5. {
  6.         int i,j;
  7.         for(i=0;i<x;i++)   // 判断头上是否有皇后
  8.         {
  9.                 if(a[i][y])
  10.                 return 0;
  11.         }
  12.         for(i=x-1,j=y-1;i>=0,j>=0;i--,j--)  //判断左上方
  13.         {
  14.                 if(a[i][j])
  15.                 return 0;
  16.         }
  17.         for(i=x-1,j=y+1;i>=0,j<8;i--,j++)  //判断右上方
  18.         {
  19.                 if(a[i][j])                   //因为是从上到下的放法 ,所以不需要判断左下方和右下方
  20.                 return 0;
  21.         }

  22.         return 1;     //可以放的话返回1
  23. }
  24. int search(int k)
  25. {
  26.         int i;
  27.         for(i=0;i<8;i++)
  28.         {
  29.                
  30.                 if(pd(k,i))   //符合条件
  31.                 {
  32.                
  33.                   a[k][i]=1;  //放入皇后
  34.                 if(7==k)   
  35.                 {   
  36.                     cout<<sum++<<endl;   //如果放满8个就打印
  37.                         for(int m=0;m<8;++m)
  38.                         {
  39.                 for(int n =0;n<8;++n)
  40.                 {
  41.                         cout<<a[m][n]<<" ";
  42.                         }
  43.                         cout<<endl;
  44.                     }
  45.                 }
  46.                 else
  47.                 search(k+1);    //搜索下一个位置
  48.                    a[k][i]=0;        //回溯
  49.            }
  50.    }
  51. }
  52. int main()
  53. {
  54.        
  55.         int i,j;
  56.         for(i=0;i<8;++i)
  57.         for(j=0;j<8;++j)
  58.         a[i][j]=0;   //初始化
  59.         search(0);
  60.         return 0;
  61. }
复制代码
QQ图片20180812190137.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-12 20:23:42 | 显示全部楼层
左下方与右下方没有判断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-12 22:11:00 | 显示全部楼层
claws0n 发表于 2018-8-12 20:23
左下方与右下方没有判断

不用的   因为我是从上到下摆放棋子的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-16 08:49:47 | 显示全部楼层
条件判断的那个地方好像应该是&&的关系
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 21:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表