【可怕】乔酱的2416攻占计划!
来源:互联网 发布:政府大数据 分析软件 编辑:程序博客网 时间:2024/04/28 12:06
乔酱的2416攻占计划
题目描述
乔酱近日闲来无事,玩起了服务器自我攻防,可是他发现自己的服务器漏洞在哪,自己的病毒怎么杀,自己都清楚啊。哎,还是太无聊,于是他盯上了机房的电脑。
假设乔酱有一种病毒,该病毒除了能感染投入的电脑外,还能转移到邻近的(东南西北四个方向)处于开机状态的电脑中,将其感染,如果机房所有的电脑都开着,那么乔酱只需要一个病毒就能完成攻占,可怕!
输入
有多组案例,每个案例开始一行输入两个整数n、m(0 < n,m<=20),表示机房的电脑共有n行,m列,接下来有n行m列的1或者0,表示每台电脑处于开机状态或者关机状态。
输出
对应每个案例,输出一个整数k,k为乔酱的感染该机房处于开机状态的电脑所需的最小病毒数,每个案例后输出一个空行。
样例输入
5 5
1 1 0 0 1
1 0 0 0 1
0 0 1 0 1
1 0 0 1 0
1 1 0 0 0
3 3
1 1 1
1 1 1
1 1 1
样例输出
5
1
代码:
#include <stdio.h>#include <string.h>#define MAXN 30int Map[MAXN][MAXN];int m,n;void dfs(int x,int y) //深度优先搜索,调用递归{ if(Map[x][y]==1&&x>=0&&x<m&&y>=0&&y<n) { Map[x][y]=0; //关闭这台电脑,并检查周围的电脑 dfs(x-1,y); dfs(x,y-1); dfs(x+1,y); dfs(x,y+1); } return ;}int main(){ while(scanf("%d%d",&m,&n)!=EOF) { memset(Map,0,sizeof(Map));//数组初始化 int virus=0; for(int i=0;i<m;i++) //for循环镶嵌,一般在一个量变化时,另一个量发生一整套变化时使用 { for(int j=0;j<n;j++) { scanf("%d",&Map[i][j]); //自定义开机的电脑 } } for(int i=0;i<m;i++) //从第一行以一个开始,只要有开机的电脑就用病毒攻占,一次往下判断,最后使用的病毒数,就是要输出的病毒数 { for(int j=0;j<n;j++) { if(Map[i][j]) //如果电脑开机 { dfs(i,j); virus++; //只要有开机的电脑,就用病毒攻占 } } } printf("%d\n\n",virus); } return 0;}
阅读全文
0 0
- 【可怕】乔酱的2416攻占计划!
- FZU2210-攻占计划
- fzu 2210 攻占计划 图论 dfs
- FZU 2210 攻占计划(思维题)
- 可怕的SoftEther
- 可怕的程序溢出
- 最“可怕”的老师
- 六种最可怕的病毒
- 可怕的天气
- 可怕的口音
- 可怕的天网防火墙
- 可怕的肠粉事件
- 可怕的网络
- 女生挺可怕的
- 可怕的口音
- 可怕的冷漠
- 可怕的CET
- 可怕的无知
- 2015NOIP普级组第一题--金币(参考洛谷题解)
- scrapy用到的一些配置问题
- php+mysql+ajax实现注册(无加密)
- 使用VMware虚拟机安装Ubuntu14.04.3-server系统
- Linux下的基本操作
- 【可怕】乔酱的2416攻占计划!
- Linux ——多进程编程
- MySQL存储过程
- struts2中的值栈的详解
- Redis事务
- springMvcZip下载 压缩流实现批量下载Word文档
- 笔记day2多进程
- 修改UITextfield的Placeholder字体的颜色
- hdu 3336 Count the string【kmp】