Fire Net(深搜 和一前不一样的深搜)
/*
http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1162
本题妙处:
用一个数对行取商是行的坐标 对行取余是列的坐标;
注意: 二位数组必须从[0][0]开始,并且这个数也是从零开始的;
以前做的题目都是在for循环里面进行递归
*/
include
include
include
include
include
include
include
using namespace std;
char diaoBao[5][5];
int m,min1=0;
bool isFang(int x,int y)
{
for(int i=x-1; i>=0; i--)
{
if(diaoBao[i][y]=='0')//此点是否和以前放置的点冲突,0代表此行和它离的最近的点已经放置过直接返回假值
return false;
if(diaoBao[i][y]=='X')//遇到墙了,说明此行可以放置退出 看看列是否能放置
break;
}
for(int i=y-1; i>=0; i--)// 列
{
if(diaoBao[x][i]=='0')
return false;
if(diaoBao[x][i]=='X')
break;
}
return true;
}
void dfs(int cur,int s)
{
if(cur==m*m)
{
if(s>min1)
min1=s;
return;
}
int x=cur/m;//行的坐标
int y=cur%m;//列的坐标
if(diaoBao[x][y]=='.'&&isFang(x,y))//满足条件能够放置
{
diaoBao[x][y]='0';
dfs(cur+1,s+1);//能够放置的条件下 s+1
diaoBao[x][y]='.';
}
dfs(cur+1,s);//注意: 前面不能加 else 不满足条件的情况下s不再加1 但是在满足条件下上一步已经执行了,这一步只是起到
//向下一步继续扩展不影响s的值
}
int main()
{
while(scanf("%d",&m),m)
{
min1=0;
memset(diaoBao,'.',sizeof(diaoBao));
for(int i=0; i<m; i++)
scanf("%s",diaoBao[i]);
dfs(0,0);
printf("%d\n",min1);
}
return 0;
}
Fire Net(深搜 和一前不一样的深搜)的更多相关文章
- centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标前所有字符 Ctrl+r 搜索命 hash命令 Ctrl+左箭头/右箭头 cd命令 第三节课
centos 目录结构 快捷键 ls命令,alias别名,so:动态库 a:静态库,环境变量PATH,Ctrl+z 暂停命令,Ctrl+a 光标到行首,Ctrl+e 光标到行尾,Ctrl+u 删除光标 ...
- UVA - 11624 Fire! bfs 地图与人一步一步先后搜/搜一次打表好了再搜一次
UVA - 11624 题意:joe在一个迷宫里,迷宫的一些部分着火了,火势会向周围四个方向蔓延,joe可以向四个方向移动.火与人的速度都是1格/1秒,问j能否逃出迷宫,若能输出最小时间. 题解:先考 ...
- 什么时候用深搜(dfs)什么时候用广搜(bfs)(转)
1.BFS是用来搜索最短径路的解是比较合适的,比如求最少步数的解,最少交换次数的解,因为BFS搜索过程中遇到的解一定是离根最近的,所以遇到一个解,一定就是最优解,此时搜索算法可以终止.这个时候不适宜使 ...
- POJ 1128 拓扑排序 + 深搜
/* (⊙v⊙)嗯 貌似是一个建图 拓扑+深搜的过程.至于为什么要深搜嘛..一个月前敲得题现在全部推了重敲,于是明白了.因为题意要求如果有多个可能的解的话. * 就要输出字典序最小的那个.所以可以对2 ...
- nyoj-20-吝啬的国度(深搜)
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描写叙述 在一个吝啬的国度里有N个城市.这N个城市间仅仅有N-1条路把这个N个城市连接起来.如今,Tom在第S号城市 ...
- 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)
#include <iostream> #include <stdio.h> #include <cstdlib> #include <cstring> ...
- 图的基本操作(基于邻接表):图的构造,深搜(DFS),广搜(BFS)
#include <iostream> #include <string> #include <queue> using namespace std; //表结点 ...
- 算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS
图的深搜与广搜 复习下二叉树.图的深搜与广搜. 从图的遍历说起.图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其 ...
- 【深搜(DFS)-例题-踏青】-C++
描述 小白和他的朋友周末相约去召唤师峡谷踏青.他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地.草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都 ...
随机推荐
- 认识k_BackingField【转】
事情从Json的序列化和反序列化说起. 在C#2.0的项目中,以前经常使用Json.Net实现序列化和反序列化.后来从c#3.0中开始使用新增的DataContractJsonSerializer进行 ...
- move file create directory.
If we want to move file to the directory that does not exist,and if we perform a File.Move,it will r ...
- SQL SERVER 查看死锁的存储过程
end
- 不用Google Adsense的84个赚钱方法
这是一个关于网络广告商和网络销售的汇总列表,可以用来为您的网站或博客赚点钱.广告商都是英文的,加入广告请确认其是否支持中国地区支持,不支持的话就不必加入了. Chitika : 购物中心旗帜广告. ( ...
- 『重构--改善既有代码的设计』读书笔记----Substitute Algorithm
重构可以把复杂的东西分解成一个个简单的小块.但有时候,你必须壮士断腕删掉整个算法,用简单的算法来取代,如果你发现做一件事情可以有更清晰的方式,那你完全有理由用更清晰的方式来解决问题.如果你开始使用程序 ...
- 面试后 follow up letter 分享
分享一下最近面试外企的follow up letter. Dear Mr. Xu, Thank you again for the time you and Mr. Guo spent wit ...
- 基于BitNami for XAMPP进行Drupal7安装的教程(Win7平台)
BitNami是一个开源项目,该项目产生的开源软件包可用于安装Web应用程序和解决方案堆栈,以及虚拟设备.BitNami 提供wordpress.joomla.drupal.bbpress等开源程序的 ...
- 知识库总结mysql常用cmd命令
打开命令目录 打开D盘mysql目录 d: cd D:\Ampps\mysql\bin 常用操作 将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接: ...
- 3.1决策树理论--python深度机器学习
参考彭亮老师的视频教程:转载请注明出处及彭亮老师原创 视频教程: http://pan.baidu.com/s/1kVNe5EJ 0. 机器学习中分类和预测算法的评估: 准确率 速度 强壮行 ...
- Zephyr-开发流程
开发流程 前提1:检查你的Linux主机满足入门指南中规定的最低要求. 具体请参考 : 物联网操作系统-Zephyr 前提2: 确保SDK的环境变量和zephyr项目的环境变量. 终端执行: $ e ...