【2022东区信息学小学组】4. 激光炸弹(laser.cpp)
比赛题目
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
分数:100
描述
有一张n*m的网格图,每个格子上都可能会有激光炸弹、障碍之中的某一个东西。激光炸弹引爆后会朝上下左右四个方向发射激光,激光的射程可到无限远。激光可以引爆激光炸弹,可以穿透空的格子,但不能穿透障碍。
现在引爆了其中一枚激光炸弹,因引爆而发射的激光可能会继续引爆其他炸弹,进而引起连锁反应。你需要求出最终一共有多少枚激光炸弹被引爆了(包括最开始引爆的那枚)。
输入描述
第一行输入两个正整数n,m。
接下来n行,每行输入一个长度为m的字符串。第i行第j个字符为’.’、’B’、’X’其中之一,分别表示空格子、激光炸弹、障碍。
最后一行输入两个正整数x,y,表示最开始引爆位于第x行第y列的那枚激光炸弹。保证第x行第y列的格子上一定有一枚激光炸弹。
输出描述
输出最终被引爆的激光炸弹的总个数。
用例输入 1
3 4
BX.B
.XBX
B.BX
1 1
用例输出 1
4
提示
【数据范围】
对于30%的数据,n,m5
对于60%的数据,n,m30
对于另外20%的数据,保证网格图中不存在障碍
对于100%的数据,n,m1000
c++搜索与回溯咋做?