题意:

给一个 n 行,m 列的字符矩阵,*表示完整的冰块,X表示断裂的冰块,*踩一下变成X,X踩一下就断裂,之后给出两个确定的点,在

保证冰块不发生断裂的情况下,问能否从一个点走到另一个点,并将到达的那个点的冰块踩碎,不能再原地踏步。

输入:

4 6
X...XX
...XX.
.X..X.
......
1 6
2 2
5 4
.X..
...X
X.X.
....
.XX.
5 3
1 1

输出:

YES

NO

分析:

一个自带状态的四方向的搜索,我们要保证访问*的点不访问X的点,这一点类似贪心,访问之后,该点就变成了X,如果到达的那一

点可以变成X,则表示可以到达。

代码:

自带状态的dfs

#include<bits/stdc++.h>
using namespace std;char c[505][505];
int r1,c1,r2,c2;
int n,m;
int dr[]= {1,0,-1,0};
int dc[]= {0,1,0,-1};
bool dfs(int rr,int cc)
{if(rr<0||rr>=n||cc<0||cc>=m)return false;if(c[rr][cc]=='X'&&rr==r2&&cc==c2) //可到达return true;else if(c[rr][cc]=='X') //保证只访问"."return false;c[rr][cc]='X'; //访问过for(int i=0; i<4; i++){if(dfs(rr+dr[i],cc+dc[i])) //可递归return true;}return false;
}
int main()
{scanf("%d%d",&n,&m);for(int i=0; i<n; i++){for(int j=0; j<m; j++){cin >>c[i][j];}}scanf("%d%d%d%d",&r1,&c1,&r2,&c2);r1--;c1--;r2--;c2--; //给出的坐标和矩阵中的位置不对应printf("(%d,%d),(%d,%d)\n",r1,c1,r2,c2);int f=0;for(int i=0; i<4; i++){if(dfs(r1+dr[i],c1+dc[i]))f=1;}if(f)printf("YES\n");elseprintf("NO\n");return 0;
}

自带状态的bfs:

#include <bits/stdc++.h>
using namespace std;int n,m,r1,c1,r2,c2;
int dr[]= {1,0,-1,0};
int dc[]= {0,1,0,-1};
char c[505][505];bool bfs()
{queue <int> qx,qy;qx.push(r1);qy.push(c1);while(!qx.empty()){int rr=qx.front();int cc=qy.front();qx.pop();qy.pop();for(int i=0; i<4; i++){int tmpr=rr+dr[i];int tmpc=cc+dc[i];if(tmpr==r2&&tmpc==c2&&c[tmpr][tmpc]=='X')return true;if(tmpr>=1&&tmpr<=n&&tmpc>=1&&tmpc<=m&&c[tmpr][tmpc]=='.'){c[tmpr][tmpc]='X';qx.push(tmpr);qy.push(tmpc);}}}return false;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1; i<=n; i++){for(int j=1; j<=m; j++){cin >>c[i][j];}}scanf("%d%d%d%d",&r1,&c1,&r2,&c2);if(bfs())printf("YES\n");elseprintf("NO\n");return 0;
}

CodeForces 540C--自带标记的四方向搜索相关推荐

  1. CodeForces - 540C Ice Cave

    Ice Cave CodeForces - 540C AYIT-2021 609暑假集训第一周上 搜索和贪心 You play a computer game. Your character stan ...

  2. Codeforces 900D Unusual Sequences:记忆化搜索

    题目链接:http://codeforces.com/problemset/problem/900/D 题意: 给定x,y,问你有多少个数列a满足gcd(a[i]) = x 且 ∑(a[i]) = y ...

  3. Codeforces 540C Ice Cave (BFS)

    题目:http://codeforces.com/problemset/problem/540/C 代码: #include<stdio.h> #include<string.h&g ...

  4. Codeforces Gym 100231G Voracious Steve 记忆化搜索

    Voracious Steve 题目连接: http://codeforces.com/gym/100231/attachments Description 有两个人在玩一个游戏 有一个盆子里面有n个 ...

  5. Codeforces Gym 101473D Folding Machine (暴力搜索)

    题目连接: http://codeforces.com/gym/101473/attachments 原先以为按照这个复杂度还要剪一下支,没想到暴力dfs完全可以通过. 代码: #include &l ...

  6. CodeForces - 1285D Dr. Evil Underscores(记忆化搜索+字典树)

    题目链接:点击查看 题目大意:给出n个数字,现在要求出一个X,使得X与n个数字单独异或之后的最大值,输出这个最大值的最小值 题目分析:最大值的最小值,差点就以为是字典树+二分了,因为没有单调性然后就无 ...

  7. Gargari and Permutations CodeForces - 463D(建图+记忆化搜索)

    Gargari got bored to play with the bishops and now, after solving the problem about them, he is tryi ...

  8. codeforces D.MADMAX 动态规划、记忆化搜索

    题意 给出一个DAG,每条边上有权重(权重是小写字母的ASCII码),现在两位同学A和B分别位于某两点上(可以相同),其中A和B轮流走,但是每人所走的边权不能变小,走到不能走为止就输. A先走,询问最 ...

  9. codeforces round 309 div1 Nudist Beach 二分+搜索

    题目描述:给出一个有n(1<=n<=1e5)个点m(1<=m<=1e5)条边的无向图,其中有k个点为堡垒,现在要求占领除堡垒外的一些点作为我方据点,未被占领的点视为敌方据点,使 ...

最新文章

  1. Python3将xml文件解析为Python对象
  2. PX4/Pixhawk---uORB深入理解和应用
  3. 用Python模拟浏览器操作
  4. .Net Core3.0使用gRPC
  5. 物资申请php,php学生捐赠物品管理系统
  6. SpringBoot集成MyBatis的分页插件PageHelper
  7. vue服务端渲染添加缓存
  8. Windows下配置Git
  9. Android 创世纪 第三天
  10. AbiWord 中Piece Table 数据结构的实现----AbiWord Documentation
  11. 【react】 react---项目的-----------简单路由配置
  12. pythonobject转int_python – Pandas:将dtype’object’转换为int
  13. SSLOJ·马蹄印【DFS】
  14. Linux命令总结大全,包含所有linux命令
  15. Ubuntu 声卡解决办法合集
  16. java销毁servlet_servlet一般什么时候销毁
  17. Scroll View控制菜单栏的伸缩
  18. 【Python】cmd指令安装python第三方库的几种方法
  19. java电话号码_java编程——电话号码查询系统
  20. python中的.nc文件处理 | 02 CMIP及MACA v2气候数据介绍

热门文章

  1. 全栈开发学习路线总结(全网最详细的全栈开发资源汇总)
  2. Oracle没有WM_CONCAT函数的解决办法
  3. 图像显著性论文(一)—A Model of saliency Based Visual Attention for Rapid Scene Analysis
  4. RRAM 蕴含逻辑运算IMP
  5. MySQL索引失效原因,SQL查询语句不走索引原因
  6. Google Web App开发指南第三章:案例研究
  7. 【转】[安卓]解决因为冻结了系统程序导致不能开机的问题
  8. 2016年上半年信息系统项目管理师真题之上午题小虎趣味解答第26-30题
  9. 云原生时代(五):Kubernetes与容器编排之战
  10. 中级会计师考试计算机怎样操作,全国中级会计师无纸化考试,机考系统操作技巧...