程序设计:引爆炸弹 (计蒜客 - 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;
} 





相关文章
|
SQL 关系型数据库 调度
pgpool-recovery扩展分析
Pgpool-II的故障转移功能需要用到pgpool-recovery扩展,提供了pgpool_recovery、pgpool_remote_start、pgpool_pgctl、pgpool_switch_xlog等几个用C语言实现的自定义函数,用于辅助online recovery工作。
|
机器学习/深度学习 人工智能 运维
输电线路缺陷检测国内外研究现状
随着我国电网系统的不断发展,基层巡检作业负担越来越重,运维成本越来越高,如何实现输电线路部件缺陷的智能化检测变得愈发重要。同时,由于国家《新一代人工智能发展规划》的提出和国家电网"数字新基建"的部署,人工智能应用于电力设备运维的相关技术得到了快速发展,对输电线路部件视觉缺陷准确检测成为亟待解决的关键问题之一。
1920 0
|
存储 算法 C语言
【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]
【C++入门到精通】C++的IO流(输入输出流) [ C++入门 ]
318 0
|
6月前
|
人工智能 自然语言处理 安全
AI技术发展下,单智能体局限性凸显,如何通过MCP和A2A协议实现智能体团队协作转变?
本文智能体专家三桥君探讨了AI智能体协作的关键技术MCP(工具调用协议)和A2A(智能体协作协议)。MCP扩展智能体功能边界,支持动态连接外部工具;A2A实现智能体间的安全协作与状态同步,通过AgentCard实现能力匹配。二者集成后,可构建跨框架协作生态,解决复杂任务处理难题。三桥君指出,拥抱该技术体系是突破单智能体局限、实现AGI落地的核心路径。
305 0
|
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各有特点,开发者需依据目标平台特性进行选择。
663 3
|
人工智能 测试技术
Valley:字节跳动开源小体积的多模态模型,在小于 10B 参数的模型中排名第二
Valley 是字节跳动推出的多模态大模型,能够处理文本、图像和视频数据,在电子商务和短视频领域表现优异,并在 OpenCompass 测试中排名第二。
598 10
Valley:字节跳动开源小体积的多模态模型,在小于 10B 参数的模型中排名第二
快速部署 HeyForm 社区版
借助 HeyForm,任何人都可以轻松创建引人入胜的对话表单,用于调查、问卷、测验和民意调查,无需任何编码技能。本文介绍使用计算巢快速部署HeyForm社区版。
快速部署 HeyForm 社区版
|
搜索推荐 数据挖掘 API
拼多多根据ID取商品详情原数据API接口的开发应用与收益
拼多多作为中国知名电商平台,为开发者和企业提供丰富的API接口,助力快速接入平台,实现商品推广、订单管理等功能。其中,根据ID取商品详情原数据的API接口尤为重要,具备高效性、稳定性和安全性,广泛应用于电商数据分析、价格监测、竞品分析、商品推荐系统、移动应用开发及精准营销等领域,为企业带来显著收益。
311 0
|
人工智能 数据可视化 Java
完全私有化部署!一款开源轻量级网站防火墙!
完全私有化部署!一款开源轻量级网站防火墙!
|
存储 小程序 容器
如何制作一个微信答题小程序?
如何制作一个微信答题小程序?
699 0