前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >引爆炸弹

引爆炸弹

作者头像
全栈程序员站长
发布2022-09-06 15:08:55
发布2022-09-06 15:08:55
35500
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

在一个n×m 的方格地图上,某些方格上放置着炸弹。手动引爆一个炸弹以后,炸弹会把炸弹所在的行和列上的所有炸弹引爆,被引爆的炸弹又能引爆其他炸弹,这样连锁下去。

输入格式

第一行输两个整数 n,m用空格隔开。 接下来 n 行,每行输入一个长度为 m 的,表示地图信息。0表示没有炸弹,1表示炸弹。

样例输入

5 5 00010 00010 01001 10001 01000

样例输出 :2

代码语言:javascript
代码运行次数:0
复制
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;
const double PI=acos(-1.0);
int n,m;
int ans;
int a[105][105];
bool vx[105],vy[105];
void dfs(int x,int y){
    a[x][y]=0;
    if(!vx[x]){
     vx[x]=1;
        for(int i=0;i<m;i++){
            if(a[x][i]==1){
                dfs(x,i);
            }
        }
    }
    if(!vy[y]){
     vx[y]=1;
        for(int i=0;i<n;i++){
            if(a[i][y]==1){
                dfs(i,y);
            }
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(a[i][j]==1){
                ans++;
                dfs(i,j);
            }
        }
    }
    cout<<ans;
    return 0; 
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155191.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 输入格式
    • 样例输入
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档