八皇后问题(DFS剪枝)
来源:互联网 发布:linux强制改语言 编辑:程序博客网 时间:2024/05/16 12:29
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int count=0;
int c[10],chess[10][10];
void dfs(int depth)
{
if (depth==9)
{
for(int i=1;i<=8;i++)
{
for(int k=1;k<=8;k++)
{
printf("%d ",chess[i][k]);
}
printf("\n");
}
count++;
printf("\n");
return ;
}
for(int i=1;i<=8;i++)
{
int ok=1;
c[depth]=i;
for(int k=1;k<depth;k++)
{
if (c[depth]==c[k]||c[depth]-c[k]==depth-k||c[depth]-c[k]==k-depth)
{
ok=0;
break;
}
}
if (ok)
{
chess[depth][i]=1;
dfs(depth+1);
chess[depth][i]=0;
}
}
return ;
}
int main(int argc, char *argv[])
{
memset(chess,0,sizeof(chess));
dfs(1);
printf("%d",count);
return 0;
}
几个要点:
1.棋子不能是(1,1) (1,2) 的放,根据每行必定会放一个来剪枝。
2.注意能放的条件判断。判断对角线通过行列之差是一个知识点。
- 八皇后问题:DFS剪枝
- 八皇后问题(DFS剪枝)
- 八皇后问题(DFS)
- 八皇后问题 DFS
- 八皇后问题 DFS
- 八皇后问题-DFS
- 八皇后问题 DFS
- 八皇后问题DFS解法
- DFS解八皇后问题
- Dfs回溯-八皇后问题
- 八皇后问题-回溯-DFS
- HDU 2553 N皇后问题( DFS + 剪枝 )
- 回溯法 剪枝 八皇后问题
- 八皇后-剪枝函数
- hdu 1045 zoj1002 八皇后问题 dfs
- 八皇后问题(dfs常规解法)
- hdu2553八皇后问题(DFS)
- 八皇后问题(排列+递归+剪枝=回溯法)
- Configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.
- 查找算法(基于二叉排序树的查找)
- 栈
- HDU 1429 状压bfs 胜利大逃亡
- Java Observable 模式
- 八皇后问题(DFS剪枝)
- 数据结构——快速排序
- 【android】解决华为手机无法输出Log.d(..)的问题
- php连接postgresql
- android.view.ViewRoot$CalledFromWrongThreadException 异常的解决方案Activity类runOnUiThread方法
- java中利用正则表达式过滤特殊字符
- 【deeplearning】【框架】【caffe】之 caffe安装
- 【Linux】启动mongo db后台服务
- C++/C宏定义中## 连接符与# 符的含义