3376:【例65.2】 清除地雷
[例 65.2] 清除地雷
/*
3376:【例65.2】 清除地雷
http://bas.ssoier.cn:8086/problem_show.php?pid=3376
计蒜客信息学 6 月编程新赛 D题
https://blog.csdn.net/qq_51687579/article/details/119106145
*/
#include<bits/stdc++.h>
using namespace std;
char a[105][105]; //字符数组 储存地图
int n,m;
void fun(int x,int y) //递归函数
{
a[x][y]='2'; //字符换为2表示已经引爆
int up=max(x-1,1),down=min(x+1,n); //确定上下位置
int l=max(y-1,1),r=min(y+1,m); //确定左右位置
for(int i=up;i<=down;i++)
{
for(int j=l;j<=r;j++)
{
if(x==i&&y==j) //遍历到自身位置跳过
continue;
if(a[i][j]=='1')
{
fun(i,j);
}
else
{
a[i][j]='2';
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
int x,y;
cin>>x>>y;
if(a[x][y]=='0') //判断0或1 如果为0则原样输出
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j];
}
cout<<endl;
}
}
else //可以引爆
{
fun(x,y); //递归函数
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cout<<a[i][j];
}
cout<<endl;
}
}
return 0;
}
《信息学奥赛一本通 编程启蒙 C++版》 3441-3450(8题)
《信息学奥赛一本通 编程启蒙C++版》3451-3456(5题)
《信息学奥赛一本通 编程启蒙C++版》3456-3460(5题)
《信息学奥赛一本通 编程启蒙C++版》3456-3460(5题)_3460:【例83.4】最大公约数和最小公倍数-CSDN博客
《信息学奥赛一本通 编程启蒙 C++版》 3451-3460(10题)
《信息学奥赛一本通 编程启蒙 C++版》 3451-3460(10题)_3452:【例82.2】 座次问题-CSDN博客
《信息学奥赛一本通 编程启蒙C++版》3461-3465(5题)
《信息学奥赛一本通 编程启蒙C++版》3466-3470(5题)
《信息学奥赛一本通 编程启蒙 C++版》 3461-3470(10题)
《信息学奥赛一本通 编程启蒙C++版》3471-3475(5题)
《信息学奥赛一本通 编程启蒙C++版》3476-3480(5题)
《信息学奥赛一本通 编程启蒙C++版》3481-3482(2题)
《信息学奥赛一本通 编程启蒙 C++版》 3471-3482(12题)
《信息学奥赛一本通 编程启蒙C++版》3001-3482
《信息学奥赛一本通 编程启蒙C++版》3001-3482_信息学奥赛一本通第几版有答案3165--3185-CSDN博客