题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2

解题报告:

这里的深搜有一点不同,就是,在深搜每一个点时,都要深搜每一个点,就是一个完全二叉树。

借鉴:http://blog.csdn.net/zxy_snow/article/details/5952668

#include <stdio.h>
#include <iostream>
#include <stdlib.h> using namespace std; int visit[][],mmax,n,cou;
///visit 里面为0,表示没有东西,1表示有碉堡,2表示有墙;
///cou,计数当下放的碉堡个数
///mmax,表示最佳方案 int canPut(int x,int y)///计算是否可以放碉堡
{
///有碉堡,则返回0
for(int i=y;i>=;i--)
{
if(visit[x][i]==)
return ;
if(visit[x][i]==)
break;
}
for(int i=y;i<=n;i++)
{
if(visit[x][i]==)
return ;
if(visit[x][i]==)
break;
}
for(int i=x;i>=;i--)
{
if(visit[i][y]==)
return ;
if(visit[i][y]==)
break;
}
for(int i=x;i<=n;i++)
{
if(visit[i][y]==)
return ;
if(visit[i][y]==)
break;
}
return ;
} ///DFS
void dfs()
{
if(cou>mmax)
mmax=cou;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
if(!visit[i][j]&&canPut(i,j))
{
visit[i][j]=;
cou++;
dfs();
visit[i][j]=;
cou--;
}
}
}
} int main()
{
char str[];
while(scanf("%d",&n),n)
{
mmax=,cou=;
for(int i=;i<=n;i++)
{
cin>>str;
for(int j=;j<n;j++)
{
visit[i][j+]=(str[j]=='X')?:;
}
}
dfs();
cout<<mmax<<endl;
}
return ;
}

深搜(DFS),回溯,Fire Net的更多相关文章

  1. 图的遍历 之 深搜dfs

    DFS 遍历 深度优先搜索是一个递归过程,有回退过程. 对一个无向连通图,在访问图中某一起始顶点u 后,由u 出发,访问它的某一邻接顶点v1:再从v1 出发,访问与v1 邻接但还没有访问过的顶点v2: ...

  2. HDU 2553 N皇后问题(深搜DFS)

    N皇后问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. 深搜(DFS),Image Perimeters

    题目链接:http://poj.org/problem?id=1111 解题报告: 1.这里深搜有一点要注意,对角线上的点,如果为'.',则total不应该增加,因为这不是他的边长. #include ...

  4. 算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS

    图的深搜与广搜 复习下二叉树.图的深搜与广搜. 从图的遍历说起.图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其 ...

  5. 【深搜(DFS)-例题-踏青】-C++

    描述 小白和他的朋友周末相约去召唤师峡谷踏青.他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地.草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都 ...

  6. 【LeetCode】深搜DFS(共85题)

    [98]Validate Binary Search Tree [99]Recover Binary Search Tree [100]Same Tree [101]Symmetric Tree [1 ...

  7. HDU 2614 Beat 深搜DFS

    这道题目还是比较水的,但是题意理解确实费了半天劲,没办法 谁让自己是英渣呢! 题目大意: 猪脚要解决问题, 他有个习惯,每次只解决比之前解决过的问题的难度要大. 他给我们一个矩阵  矩阵的 i 行 j ...

  8. noj电子老鼠走迷宫(深搜dfs)超时错误

    1042.电子老鼠闯迷宫 时限:1000ms 内存限制:10000K  总时限:3000ms 描述 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色 ...

  9. poj1321 棋盘问题(深搜dfs)

    转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:id=1321">http://poj.org/prob ...

随机推荐

  1. js正则表达式基本语法

    正则表达式基本语法 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束. 例子如下: "^The":表示所有以"The"开始的字符串(&q ...

  2. Python+Selenium-BDD框架之behave

    (查看behave具体教程可以访问官网: http://pythonhosted.org/behave/) 1.安装behave 安装好python后,使用 pip install behave命令安 ...

  3. Open Closed Principle(OCP)开闭原则

    面向对象的最基本原则 Software entites like classes,modules and functions should be open for extension but cloa ...

  4. vue-scroller的使用 && 开发自己的 scroll 插件

    vue-scroller的使用 在spa开发过程中,难免会遇到使用scroll的情况,比如下面的: 即,当用户选择好商品之后,点击购物车,就会有一个购物车弹窗,如果选择的商品小于三个,刚好合适,如果多 ...

  5. 简单的CSS3鼠标滑过图片标题和遮罩层动画特效

    此文转自:http://www.cnblogs.com/w2bc/p/5735300.html,仅供本人学习参考,版权归原作者所有!   这是一款使用CSS3制作的简单的鼠标滑过图片标题和遮罩层动画特 ...

  6. 游戏源码--Unity开源Moba游戏-服务器-客户端完整V1.0

    http://www.manew.com/thread-111658-1-1.html

  7. java 命令学习总结

    javac: (1)编译源文件成为字节码 (2)-d参数用于指定字节码文件所在包的位置,称为目标位置.如果源文件使用了package命令,则会自动在目标位置下创建完整的包目录,如源文件使用了 pack ...

  8. JVM 类加载全过程

    类加载机制 - JVM把class文件加载到内存中 并对数据进行 校验,解析,初始化,最终形成JVM可以直接使用的java类型的过程 详细过程  加载→ 验证→ 准备→ 解析 → 初始化→ 使用 → ...

  9. Java入门系列-06-运算符

    这篇文章为你搞懂2个问题 java 中的常用运算符有哪些?如何使用? 这些运算符的运算优先级是怎样的? 算数运算符 明显是做数学运算的,包括以下符号: + 加法运算 敲一敲: public class ...

  10. C# ADO.NET

    ADO.NET 作业总结难点 数据库语句掌握太差 //查询 select * from Users //查询表中所有数据 select * from Users where UserName = 'l ...