博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搜索:N皇后
阅读量:4956 次
发布时间:2019-06-12

本文共 992 字,大约阅读时间需要 3 分钟。

N皇后问题是DFS的代表性问题,其最难的地方就是在判重这里,想明白了怎么判重的话问题就很显然了。

这里给出两份代码,其中第一份代码的效率更好,就是在判重上下了功夫。当然,我记得还有使用位运算进行判重的方法,这里就先不介绍了。

首先是第一份代码,二维数组直接进行判重。

1 #include
2 using namespace std; 3 int n,ans=0; 4 int a[1005],v[5][1005]; 5 void dfs(int dp) 6 { 7 if(dp>n) 8 { 9 ans++;10 return;11 }12 for(int i=0;i
>n;23 dfs(1);24 cout<

第二份代码的判重思路还是很容易看懂的,只不过效率不如第一份代码的好。

1 #include
2 #include
3 #include
4 using namespace std; 5 const int maxn=15; 6 int n; 7 int ans=0; 8 int c[maxn]; 9 bool check(int x)10 {11 for(int i=1;i
n)21 {22 ans++;23 return;24 }25 for(int i=1;i<=n;i++)26 {27 c[dp]=i;28 if(check(dp))29 dfs(dp+1);30 c[dp]=0;31 }32 }33 int main()34 {35 cin>>n;36 dfs(1);37 cout<
<

 

转载于:https://www.cnblogs.com/aininot260/p/9278072.html

你可能感兴趣的文章
Javaweb项目中文乱码
查看>>
CSUOJ-1979 古怪的行列式(模拟)
查看>>
Vue2.x directive自定义指令
查看>>
高低价促销法PK天天平价
查看>>
提示让IE8以下版本的浏览器去更新浏览器
查看>>
C#与mySql实战七:在界面中输入参数;
查看>>
PHP扩展之STOMP--安装
查看>>
ZooKeeper 部署
查看>>
选择排序可视化
查看>>
file 上传文件后缀名 限制
查看>>
Firefox默认可以调用JSON.stringify而IE却不行
查看>>
内存系列一:快速读懂内存条标签
查看>>
PHP的重载-使用魔术方法实现
查看>>
java内部类的四大作用
查看>>
RESTful支持
查看>>
c++&c之参数传递
查看>>
使用宏的一点心得
查看>>
bzoj1799: [Ahoi2009]self 同类分布
查看>>
20145205 《信息安全系统设计基础》第5周学习总结
查看>>
c++程序书写原则
查看>>