博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再次说搜索
阅读量:4677 次
发布时间:2019-06-09

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

这次说的又有点新鲜的东西。

那就是回溯了。

本题是一个经典回溯例题,注意体会一下OK,

那么我们说说他有什么用呢?

其实很简单了,它的作用就是控制DFS的搜索流程。

在本题简单一点来说,就是它能使得DFS符合题意。

直接看例子吧。

题目:HDU 1045  

题意:这个是一个八皇后的变种。不算难。

Sample Input:

4

.X..

....

XX..

....

Sample Output:

5

 

View Code
#include
#include
#include
#include
using namespace std; char Map[5][5]; int N, Max; bool OK(int x, int y) {
int i, j; for(i=x-1; i>=0; i--) {
if(Map[i][y]=='N') return false; else if(Map[i][y]=='X') break; } for(j=y-1; j>=0; j--) {
if(Map[x][j]=='N') return false; else if(Map[x][j]=='X') break; } return true; } void DFS(int Pos, int C) {
if(Pos==N*N) {
if(C>Max) Max=C; return; } int i=Pos/N, j=Pos%N; if(Map[i][j]=='.' && OK(i, j)) {
Map[i][j]='N'; DFS(Pos+1, C+1); Map[i][j]='.'; //回溯 回溯 回溯 回溯 } DFS(Pos+1, C); return; } int main() {
int i, j; while(cin>>N && N) {
for(i=0; i
>Map[i][j]; Max = 0; DFS(0, 0); cout<
<

转载于:https://www.cnblogs.com/o8le/archive/2012/03/26/2418727.html

你可能感兴趣的文章
mybatis配置文件详解
查看>>
Objective-C plist文件与KVC 的使用
查看>>
jqGrid(2)
查看>>
杂题 UVAoj 107 The Cat in the Hat
查看>>
关于jquery-weui.js中时间控件datetimepicker的使用
查看>>
单页面应用程序(SPA)的优缺点
查看>>
http请求和http响应详细解析
查看>>
Centos 配置eth0 提示Device does not seem to be present
查看>>
OS开发入门教程(1)
查看>>
arduino 驱动电调
查看>>
一个游标的性能问题
查看>>
JMeter学习-2 JMeter环境搭建
查看>>
SQL SERVER 2012疑难问题解决方法
查看>>
关于Android RenderScript 的详细说明和一些实用文档
查看>>
POJ1051 P,MTHBGWB
查看>>
士兵队列训练问题
查看>>
js时间戳怎么转成日期格式
查看>>
div宽度设置无效问题解决
查看>>
【ArcGIS Server 开发系列】Flyingis六大系列讲座精品PDF奉献
查看>>
SQL Server 2008空间数据应用系列九:使用空间工具(Spatial Tools)导入ESRI格式地图数据...
查看>>