2018年东北农业大学春季校赛 D wyh的迷宫【搜索】
2024-08-29 21:17:25
链接:https://www.nowcoder.com/acm/contest/93/D
来源:牛客网
题目描述
给你一个n*m的迷宫,这个迷宫中有以下几个标识:
s代表起点
t代表终点
x代表障碍物
.代表空地
现在你们涵哥想知道能不能从起点走到终点不碰到障碍物(只能上下左右进行移动,并且不能移动到已经移动过的点)。
输入描述:
输入第一行一个整数T(1<=T<=10)
接下来有T组测试数据,对于每一组测试数据,第一行输入2个数n和m(1<=n,m<=500)
接下来n行,每行m个字符代表这个迷宫,每个字符都是上面4个中的一种
数据保证只有一个起点和一个终点
输出描述:
对于每一组测试数据,如果可以的话输出YES,不可以的话输出NO
输入例子:
1
3 5
s...x
x...x
...tx
输出例子:
YES
-->
示例1
输入
1
3 5
s...x
x...x
...tx
输出
YES
【分析】:判断地图可达性。可以DFS搜索看是否可以到达终点,某点a[x][y] == 't'(终点) or v[ex][ey]==1(终点坐标) 就说明可以,输出YES
【代码】:
#include<bits/stdc++.h> using namespace std;
#define ll long long
#define N 550 int t;
char a[N][N];
int dx[] = {, , -, };
int dy[] = {, -, , };
int v[N][N];
int f;
int n, m; int ok(int tx, int ty)
{
if(tx>= && tx<n && ty>= && ty<m && a[tx][ty]!='x' && v[tx][ty] == )
return ;
else return ;
} void dfs(int x, int y)
{
v[x][y] = ;
if(a[x][y] == 't'){
f = ;
return ;
}
for(int i=; i<; i++){
int x1 = x + dx[i];
int y1 = y + dy[i];
if(ok(x1,y1))
dfs(x1,y1);
} } int main()
{
int t, sx, sy;
scanf("%d", &t);
while(t--) {
f = ;
scanf("%d %d", &n, &m);
memset(v, , sizeof(v)); for(int i = ; i < n; i++) {
scanf("%s", a[i]);
} for(int i = ; i < n; i++) {
for(int j = ; j < m; j++) {
if(a[i][j] == 's') {
sx = i;
sy = j;
break;
}
}
}
dfs(sx, sy);
if(f == )
printf("YES\n");
else
printf("NO\n");
}
return ;
}
/*
1
3 5
s...x
x...x
...tx
*/
dfs
最新文章
- Unity内置的shader include files
- XML 文档和数据
- 数据库同步工具HKROnline SyncNavigator SQL Server互同步MySQL
- CSS3--幽灵按钮特效(实例)
- MongoDB log4j 日志整合
- 手机端的META你有多了解?
- C# winform DataTable 批量数据处理 增、删、改 .
- 使用jquery获取网页中图片的高度——解惑
- DOM中元素对象的属性方法
- 给php加速安装APC
- 图解ARP协议(三)ARP防御篇-如何揪出“内鬼”并“优雅的还手”
- bzoj 2816: [ZJOI2012]网络 (LCT 建多棵树)
- Mysql双主互备+keeplived高可用架构(部分)
- java多线程快速入门(二十二)
- laravel 比较好的资料地址 看云
- nltk中的三元词组,二元词组
- C#批量插入数据到Sqlserver中的四种方式 - 转
- 删除一个cjson导致系统死机
- (1.2)mysql 索引概念
- flex Datagrid checkbox
热门文章
- 12,scrapy框架之post请求
- mysql初始化失败的问题
- 网络抢票黄牛,大部分是骗人的。公布一个骗钱黄牛,QQ:2233261390,QQ群:29443597,支付页面:https://me.alipay.com/q336
- Hive jdbc连接出现java.sql.SQLException: enabling autocommit is not supported
- Linux内核使用毫秒延时函数
- [oldboy-django][2深入django]Form组件实现生成: select下拉框, checkbox复选框,radio单选框以及如何实现自定义数据格式要求
- [转]手写数字识别错误NameError: name &#39;mnist&#39; is not defined
- 为不是函数的对象 'dbo.xxxx' 提供了参数。如果这些参数要作为表提示,则需要使用 WITH 关键字
- LAMP总四部分
- 【bzoj1822】[JSOI2010]Frozen Nova 冷冻波 计算几何+二分+网络流最大流