程序设计:引爆炸弹 (计蒜客 - A1139)

简介: 程序设计:引爆炸弹 (计蒜客 - A1139)

题目:

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

现在为了引爆地图上的所有炸弹,需要手动引爆其中一些炸弹,为了把危险程度降到最低,请算出最少手动引爆多少个炸弹可以把地图上的所有炸弹引爆。

输入格式

第一行输两个整数 n,mn,mn,m,用空格隔开。

接下来 nnn 行,每行输入一个长度为 mmm 的字符串,表示地图信息。0表示没有炸弹,1表示炸弹。

数据约定:

对于 60%60%60% 的数据:1≤n,m≤1001 \le n, m \le 1001≤n,m≤100;

对于 100%100%100% 的数据:1≤n,m≤1000 1 \le n, m \le 10001≤n,m≤1000;

数据量比较大,不建议用cin输入。

输出格式输出一个整数,表示最少需要手动引爆的炸弹数。

样例输入

5 5
00010
00010
01001
10001
01000

样例输出

2

这个题我用深搜写的,题意是1是炸弹,现在要引爆炸弹,炸弹所在的行和列都会引爆,为了节省时间,可以把炸完的炸弹所在的行和列标记,然后去寻找该炸弹所在行或者列的其他炸弹。

程序代码:

#include<stdio.h>
#include<string.h>
char s[1100][1100];
int a[1100][1100];
int c[1010],b[1010];
int n,m;
void dfs(int x,int y)
{
  int i,j,k;
  a[x][y]=0;
  if(b[x]==0)//标记行
  {
    b[x]=1;
    for(i=0;i<m;i++)
    {
      if(a[x][i]==1)
        dfs(x,i);
    }
  }
  if(c[y]==0)//标记列
  {
    c[y]=1;
    for(j=0;j<n;j++)
    {
      if(a[j][y]==1)
        dfs(j,y);
    }
  }
}
int main()
{
  int i,k,j,sum;
  while(scanf("%d%d",&n,&m)!=EOF)
  {
    sum=0;
    memset(c,0,sizeof(c));
    memset(b,0,sizeof(b));
    for(i=0;i<n;i++)
      scanf("%s",s[i]);
    for(i=0;i<n;i++)
      for(j=0;j<m;j++)
        a[i][j]=s[i][j]-'0';
    for(i=0;i<n;i++)
      for(j=0;j<m;j++)
      {
        if(a[i][j]==1&&b[i]==0&&c[j]==0)
        {
          dfs(i,j);
          sum++;
        } 
      }
    printf("%d\n",sum);
  }
  return 0;
} 





相关文章
|
Shell 开发工具 数据安全/隐私保护
idea上传项目到gitee(码云)超详细
idea上传项目到gitee(码云)超详细
idea上传项目到gitee(码云)超详细
|
API 开发工具 Android开发
iOS 和 Android 平台的开发有哪些主要区别?
iOS与Android开发区别:iOS用Objective-C/Swift,App Store唯一下载渠道;Android用Java/Kotlin,多商店发布(如Google Play、华为市场)。设计上,iOS简洁一致,Android灵活可定制。开发工具,iOS用Xcode,Android用Android Studio。硬件和系统多样性,iOS统一,Android复杂。权限管理、审核流程及API各有特点,开发者需依据目标平台特性进行选择。
936 3
|
Java
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
文章详细解释了Java关键字`super`的用途,包括访问父类的成员变量、调用父类的构造方法和方法,并提供了相应的代码实例。
1824 5
Java关键字 —— super 详细解释!一看就懂 有代码实例运行!
|
存储 人工智能 uml
介绍一款好用的开源画图神器-draw.io | AI应用开发
draw.io 是一款基于浏览器的开源绘图工具,无需安装即可使用,支持多种操作系统和设备。其简洁的界面、丰富的形状库、智能对齐功能和强大的云端协作能力,使其成为专业人士和创意爱好者的首选。无论是产品设计、流程图绘制还是思维导图构建,draw.io 都能满足你的多样化需求。【10月更文挑战第7天】
2054 0
|
人工智能 自然语言处理 安全
AI技术发展下,单智能体局限性凸显,如何通过MCP和A2A协议实现智能体团队协作转变?
本文智能体专家三桥君探讨了AI智能体协作的关键技术MCP(工具调用协议)和A2A(智能体协作协议)。MCP扩展智能体功能边界,支持动态连接外部工具;A2A实现智能体间的安全协作与状态同步,通过AgentCard实现能力匹配。二者集成后,可构建跨框架协作生态,解决复杂任务处理难题。三桥君指出,拥抱该技术体系是突破单智能体局限、实现AGI落地的核心路径。
522 0
|
人工智能 安全 算法
HTTPS 的「秘钥交换 + 证书校验」全流程
HTTPS 通过“证书如身份证、密钥交换如临时暗号”的握手流程,实现身份认证与数据加密双重保障,确保通信安全可靠。
1354 0
|
存储 小程序 容器
如何制作一个微信答题小程序?
如何制作一个微信答题小程序?
1123 0
|
存储 消息中间件 负载均衡
互联网之总体架构设计篇
互联网之总体架构设计篇
919 0
互联网之总体架构设计篇
|
人工智能 数据可视化 Java
完全私有化部署!一款开源轻量级网站防火墙!
完全私有化部署!一款开源轻量级网站防火墙!
|
搜索推荐 数据挖掘 API
拼多多根据ID取商品详情原数据API接口的开发应用与收益
拼多多作为中国知名电商平台,为开发者和企业提供丰富的API接口,助力快速接入平台,实现商品推广、订单管理等功能。其中,根据ID取商品详情原数据的API接口尤为重要,具备高效性、稳定性和安全性,广泛应用于电商数据分析、价格监测、竞品分析、商品推荐系统、移动应用开发及精准营销等领域,为企业带来显著收益。
468 0