DFS-C - N皇后问题
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。
你的任务是,对于给定的N,求出有多少种合法的放置方法。Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Output共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。Sample Input
1
8
5
0Sample Output
1
92
10
#include<bits/stdc++.h>
using namespace std; int n, sum;
int a[];//存放每一行皇后的横坐标
int b[];//打表 int check(int x){
for(int i=; i<x; i++)
if(a[i]==a[x] || abs(a[x]-a[i])==abs(x-i)) return ;
return ;
} void DFS(int x){
for(int i=; i<n; i++){
a[x] = i;
if(check(x)){
if(x == n-) sum++;
else DFS(x+);
}
}
} int main(){
while(~scanf("%d", &n) && n){
if(b[n]) printf("%d\n",b[n]);
else{
sum = ;
DFS();
b[n] = sum;
printf("%d\n",sum);
} }
}
DFS-C - N皇后问题的更多相关文章
- DFS与N皇后问题
		DFS与N皇后问题 DFS 什么是DFS DFS是指深度优先遍历也叫深度优先搜索. 它是一种用来遍历或搜索树和图数据结构的算法 注:关于树的一些知识可以去看<树的概念及基本术语>这篇文章 ... 
- 【DFS】n皇后问题
		回溯: 递归调用代表开启一个分支,如果希望这个分支返回后某些数据恢复到分支开启前的状态以便重新开始,就要使用到回溯技巧,全排列的交换法,数独,部分和,用到了回溯.下一个状态在开始之前需要利用到之前的状 ... 
- HDU 1045 Fire Net(DFS 与8皇后问题类似)
		Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ... 
- hdu2553N皇后问题(dfs,八皇后)
		N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ... 
- 用dfs求解八皇后问题
		相信大家都已经很熟悉八皇后问题了,就是指:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法.主要思路:按行进行深度优先搜索,在该 ... 
- dfs 解决八皇后问题 以及其他图搜索问题
		33. N皇后问题 中文 English n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击(任意两个皇后不能位于同一行,同一列,同一斜线). 给定一个整数n,返回所有不同的n皇后问 ... 
- DFS解决八皇后问题
		2019-07-29 16:49:15 #include <bits/stdc++.h> using namespace std; ][]; int tot; int check(int ... 
- DFS,DP————N皇后问题
		C++代码 #include <iostream> using namespace std; const int N=20; int n; char g[N][N]; bool col[N ... 
- 回溯(su)算法之N皇后问题
		这里回溯算法还要好好研究一下 试探一个位置是否有效,如果有效,试探下一个位置(DFS),如果无效则回退 1.定义一个解空间,存放一个解的空间 2.DFS(暂且认为是DFS) 这里N皇后用的是递归+回溯 ... 
- 图论 List
		题目 #A 小 K 的农场 (Unaccepted) #B 信息传递 (Unaccepted) #C 最短路计数 (Accepted) #D 通往奥格瑞玛的道路 (Accepted) ... 
随机推荐
- Language Model
			在某次会上的语言模型的ppt. 
- stm32f407使用Keil uV5建立工程日志
			目录结构 Common ——包括延时函数等公用函数 STM32F4_FWLIB ——固件库 Project ——UV5工程相关文件 Main ... 
- 用msi安装MySQL时MySQL Server组件不能安装,或安装失败
			我的环境: MySQL8.0.15, win10 错误描述:在安装MySQL时,如果MySQL Server组件提示不能安装,错误提示是:VS 2015没有安装或安装失败.原因 ... 
- JS数组方法(ES5、ES6)
			1. arr.push() 从后面添加元素,添加一个或多个,返回值为添加完后的数组长度 let arr = [1,2,3,4,5] console.log(arr.push(6,7)) // 7 3 ... 
- sqldeveloper更改语言设定
			\sqldeveloper\ide\bin\ide.conf 添加下面的 日语 AddVMOption -Duser.language=jaAddVMOption -Duser.country=J ... 
- sqlserver 批量修改数据库表主键名称为PK_表名
			1.我们在创建sqlserver得数据表的主键的时候,有时会出现,后面加一串随机字符串的情况,如图所示: 2.如果你有强迫症的话,可以使用以下sql脚本进行修改,将主键的名称修改为PK_表名. --将 ... 
- VUE 是个 M V VM框架
			vue基本使用 new出来一个Vue的实例,传一堆配置参数,控制一片html VM: 响应系统 - > vDOM做标记 ->一个循环周期结束后->操作DOM new Vue 返回 V ... 
- PHP0021:PHP COOKIE 设置修改删除
- mybatis_day02
			2.映射器Mapper 相当于dao层,不用写实现类(mybatis底层会采用动态代理模式 会跟我生成实现) 步骤: (1) 创建项目 配置mybatis-config.xml 和昨天一样 (2) 创 ... 
- java提取字符串数字,Java获取字符串中的数字
			================================ ©Copyright 蕃薯耀 2020-01-17 https://www.cnblogs.com/fanshuyao/ 具体的方法如 ... 
