hdu 2553 N皇后问题(深度递归搜索)
N皇后问题
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3730 Accepted Submission(s): 1737
你的任务是,对于给定的N,求出有多少种合法的放置方法。
/** n皇后问题,由于N 是小于等于10的正整数, 所以可以使用打表的方法把前十中情况全 部找出来存起来然后每次输入时不用重新 的计算了。 */ #include <stdio.h>#define NUMS 10 /*输入的数字1---10*/ int N; /*棋盘*/ int chessboard[11][11]; /* 用来记录拜访数目 */ int cal;/* 检查皇后放置此行此列是否可以,可以返回1,不可以返回0 此递归是一行一行找的,K是棋盘的长度 */ int dfs_check(int row,int column,int k) {/* 说明已经到了棋盘的界外,前边都符合了 */if(row>k){cal++;return 1;}/* 正上方是否有皇后*/for(int i = 1; i < row; i++)/* 如果有皇后则返回不能放置这里返回0*/if(chessboard[i][column] == 1)return 0;/* 左右上方45度角检查是否可以*//* 左上方*/for(int i=row-1,j=column-1;i>0&&j>0;i--,j--)if(chessboard[i][j] == 1)return 0;/* 右上方*/for(int i=row-1,j=column+1;i>0&&j<=k;i--,j++)if(chessboard[i][j] == 1)return 0;/*标记这个位置成功了*/chessboard[row][column] = 1;/*进行下一行搜索*/for(int i=1;i<=k;i++)if(dfs_check(row+1,i,k)==1)break;chessboard[row][column] = 0;return 0; }int main() {int i,j,k;int count[11];/*打表*/for(k=1;k<=NUMS;k++){count[k] = 0;cal = 0;/*首先将棋盘初始化全部置为0*/for(i=0;i<=NUMS;i++)for(j=0;j<=NUMS;j++)chessboard[i][j]=0;for(i=1;i<=k;i++)dfs_check(1,i,k);count[k] = cal;}while(scanf("%d",&N)!=EOF&&N!=0)printf("%d\n",count[N]);return 0; }
hdu 2553 N皇后问题(深度递归搜索)相关推荐
- hdu 2553 N皇后问题 搜索 回溯法
题目地址: hdu 2553 直接小白书上面的回溯法 但是不知道有多少组数据 所以打一个表~ 代码: #include<iostream>using namespace std;int ...
- [HDU] 2553 N皇后问题-简单深搜
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2553 方法: 1.可以用对称的思想,即:如果N是偶数,则只计算第一个皇后分别放在第一行的位置1到N/ ...
- 八皇后问题 (递归 搜索)
八皇后问题:要在国际象棋棋盘8*8中放八个皇后,使任意两个皇后都不能互相吃.(提示:皇后能吃同一行.同一列.同一对角线的任意棋子.) /*分析:每一列,每一行,每一个对角线只能放一个皇后,判断对角线是 ...
- hdu 2553 N皇后问题
Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上. 你的任务是,对于给定的N ...
- hdu 2553 N皇后问题【dfs】
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- DLS 深度受限搜索 狼羊 过河 问题 python 实现
深度受限搜索(DLS)简单地说就是深度有限搜索(DFS)+深度限制(limit) DLS伪代码 实例:狼羊 过河 问题 3只羊和3头狼在河岸A,想要过河抵达河岸B.它们只有一艘船并且船上必须有1-2只 ...
- 最基础的深度优化搜索(dfs)题目
最基础的深度优化搜索(dfs)题目 前几天回看自己大一刚开学刷oj时遇到的一道循环类题目,结合这个假期自已学的一点点算法知识,重新写了段代码,也算是加深自己对dfs的理解了. 题目描述 将1,2,⋯, ...
- DFS 深度优化搜索
DFS 深度优化搜索 DFS 算法 思想:一直往深处走,直到找到解或者走不下去为止 类似于树的先根遍历.就是不撞南墙不回头 模板一: DFS(dep,..)//dep代表目前DFS的深度 {if(找到 ...
- 【用深度学习搜索相似服饰】《Using Deep Learning to Find Similar Dresses》by Luis Mey
[用深度学习搜索相似服饰]<Using Deep Learning to Find Similar Dresses>by Luis Mey
最新文章
- 用 python 实现一个多线程网页下载器
- Nexys3学习手记1:写在前面的话
- centos 配置php开发环境变量配置,CentOS中配置PHP和Nginx环境变量
- php读取csv指定行_PHP快速读取CSV大文件指定行
- 工作163:eachrt修改
- 图解集成学习中的梯度提升思想
- JVM系列(三)— Java内存模型
- windows安装gnu_在Windows上安装GNU Emacs
- 将Vba代码转换成Php代码,将这个Excel公式转换成VBA代码(函数)
- C++语言类的详解和示例
- SQLserver数据库还原后显示正在还原
- 团队项目——测试心得
- stm32f4c语言编程,如何使用STM32F4的DSP库
- 2021年值得推荐的几个可视化软件
- 红米note5系统Android11,红米Note5 MIUI11 解账户锁 可登小米账号 永不反锁 完美ROOT 解锁包...
- LeetCode常见题型——背包问题
- 读书笔记_002 甘于平凡而不甘于平凡的腐烂——《平凡的世界》所感
- OpenStack挂载ISO,安装原版windows
- JQuery动画之流星雨
- 爬虫基础_urllib
热门文章
- C++读写EXCEL文件方式比较 .
- 使用 window.alert()
- Sql语句在线转java bean https://www.bejson.com/othertools/sql2pojo/
- template与图片懒加载
- iOS开发中怎么样使用激光推送
- Datatable中对某列求和,三种不同情况下的方法 .
- hdu 4417(线段树OR树状数组)
- 利用OpenCV的VideoWriter类实现视频的写操作
- 半阈值化的应用说明及利用函数threshold实现半阈值化的方法
- 噪声dba是什么单位_在职DBA : 工作多年为什么还是选择报读工商管理博士