Red and Black 红与黑 POJ 1979 深度搜索算法
原题
Red and Black
题意:
只走黑砖,不走红砖,最多能走多少 黑砖。
有一个长方形的房间,覆盖了正方形的磁砖。每块磁砖的颜色,要么是红色,要么是黑色。一名男子站在一块黑色的磁砖上。他 可以从一块磁砖移至相邻四块磁砖中的某一块。但是,他不允许在红色磁砖上移动,他只允许在黑色磁砖上移动。
输入
输入由多个数据集组成。数据集的起始行包含了两个正整数 W 和 H;W 和 H 分别是 x- 和 y- 方向的磁砖数量。W 和 H 不超过 20
' . ' 一块黑色的磁砖
' # ' 一块红色的磁砖
'@' 一名男子,站在一块黑色磁砖上 (在一个数据集中,恰好出现一次)
输出
他从初始磁砖所能抵达的磁砖数量(包括初始位置)。
Input11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
Output
6
解题思路:
从初始位置开始,对临近坐标遍历,直到出界或无路可走。
#include<cstdio>
#include<iostream>
using namespace std;
char a[24][24];
int dx[4] = {1,-1,0,0}; // 向4个方向走
int dy[4] = {0,0,1,-1};
int w,h;
int sum = 0;
void dfs(int p,int q){a[p][q] = '#'; // 走过的地方 进行标记sum++;int nx,ny;for(int i = 0;i < 4;i++){nx = p + dx[i];ny = q + dy[i];if(a[nx][ny] == '.' && p >= 0 && q >= 0 && nx < h && ny < w){ // 当周围点为 . 时并且没有出界 dfs(nx,ny); // 以上一个点 nx,ny 为起点 继续向4个方向走}}return ;
}
int main(){while(scanf("%d%d",&w,&h) != EOF){int n,m;if(w == h && w == 0){break;}for(int i = 0;i < h;i++){for(int j = 0;j < w;j++){cin>>a[i][j];}}for(int i = 0;i < h;i++){for(int j = 0;j < w;j++){if(a[i][j] == '@'){ // 从 初始位置开始dfs(i, j);}}}printf("%d\n",sum);sum = 0;}return 0;
}
Red and Black 红与黑 POJ 1979 深度搜索算法相关推荐
- 深度搜索算法(DFS)
深度搜索算法(DFS) 提示:大家听到搜索二字,脑子里面是不是便会出现高大山的词语,今天小编就以最简单方式带大家入门. 简单解释: ----显然小编不是概念的搬运工------------------ ...
- 深度搜索算法查找最短路径
如图,百度地图上有5个地点,各个地点间是单向的路径,试求出从1到5的最短路径. 从图中可以得到一个5*5的二维矩阵,利用深度搜索算法,求出最短路径.从最后的运行结果,可以直观的看出搜索的过程 代码实现 ...
- 深度搜索算法C语言实现--以走迷宫为例
深度搜索算法是沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点.这一过程一直进行到已发现从源节点可达的所有节点为止.如果还存在未 ...
- 深度搜索算法(python实现)获取所有叶子节点到根节点的路径
深度搜索算法(python实现)获取所有叶子节点到根节点的路径 1. 目标 对于下图中的树结构,遍历输出所有叶子节点到根节点的路径. 2. 实现方式 Python代码如下: # -*- coding: ...
- 算法思想-深度搜索算法-leetcode相关题目总结
通过这篇文章你能学到什么 搜索算法 深度优先搜索 分析过程 实现代码 进出栈过程示意图 DFS算法应用-Leetcode相关题目 Leetcode 78 Subsets Leetcode 90 Sub ...
- POJ 1979 红与黑
题目地址: http://poj.org/problem?id=1979 或者 https://vjudge.net/problem/OpenJ_Bailian-2816 Red and Blac ...
- poj 1979 Red and Black(BFS)
题意:在一个矩形房间里面被瓦片覆盖,分为白色的和红色的,白的可以走,红的不能走,起始位置在白色的瓦片上,可以上下左右移动: ".":白色的瓦片: "#":红色的 ...
- POJ 1979 Red and Black (简单dfs)
题目: 简单dfs,没什么好说的 代码: #include <iostream> using namespace std; typedef long long ll; #define IN ...
- POJ 1979 Red and Black DFS
简单DFS 注意边界就行了. // #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstd ...
最新文章
- 当年修复Linux启动菜单的笔记
- 周一02.1编程语言介绍
- python快速排序解析_快速排序python实现总结
- Protobuf 安装及 Python、C# 示例
- 当我们在谈论HTTP缓存时我们在谈论什么
- 浅入浅出深度学习理论实践
- 图论:柯尼斯堡桥问题、艾科西亚游戏
- ACCESS的十种数据类型分别对应的添加语句
- 开启Hadoop/Yarn的日志监控功能,配置Spark历史服务,解决web端查看日志时的Java.lang.Exception:Unknown container问题
- 2017年3月21日
- Java基础知识点总结归纳,超级全面!(2021版)
- 计算机的桌面图标不见,桌面图标不见了怎么办,小编教你电脑桌面图标不见了怎么办...
- 聚类算法(4)--Hierarchical clustering层次聚类
- WZOI-261疯狂吃鸡腿2
- GRUB4DOS详解
- 台式电脑计算机风机,笔记本冷却风扇与台式计算机CPU风扇的质量,类型和区别...
- sqoop job 作业
- 有人这样评价Ruby,你赞同他的观点吗?
- itext html to pdf设置边距,iText:设置边距是否有效?
- 实现html语句的循环
热门文章
- 有些网站打开一半空白_如何发一条空白的朋友圈
- 设备树学习(二十六、番外篇-中断子系统之CMWQ概述[2])
- Vue+Spring Boot 前后端分离的商城项目开源啦!
- [渝粤教育] 西南科技大学 物流学基础 在线考试复习资料
- 生猪屠宰HACCP 计划验证程序
- 华为补偿10亿元鼓励7000员工辞职
- Bulletproofs用于verifiable shuffle随机组合证明
- 西交利物浦计算机分数,西交利物浦大学录取分数线2021是多少分(附历年录取分数线)...
- wps找回丢失的文档
- 如何快速有效的发散思维