ACM-数细胞
输入
第一行输入两个整数,分别代表矩阵的行和列 输入m*n的矩阵,由数字0到9组成。
输出
细胞个数。
样例输入
4 10
1 2 3 4 5 1 1 1 6 7
1 0 3 4 5 6 1 5 1 0
2 0 4 5 6 6 1 6 7 1
0 0 6 0 6 6 1 0 8 9
样例输出
1
// 数细胞.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" /*由1连接成多少个整块*/
#include <iostream>
#include <cstring>
const int MAX = ;
using namespace std;
int n, m, ans, map[MAX][MAX], vis[MAX][MAX];//地图
int dis[][] = { , , -, , , , , -};//标记数组,方向数组
void DFS(int x, int y)//横纵坐标,在递归中将走过的点标记为1
{
for (int i = ; i < ; i++)
{
int tx = x + dis[i][];//根据方向数组改变方向
int ty = y + dis[i][];
if (tx >= && tx<n && ty >= && ty<m && map[tx][ty] && !vis[tx][ty])//在地图中且是1,并且没走过,走过的地方不能回头
{
vis[tx][ty] = ;//标记为走过
DFS(tx, ty);
}
}
}
int main()
{
while (cin >> n >> m)//行列
{
//init
memset(map, , sizeof(map));
memset(vis, , sizeof(vis));
ans = ; //read
for (int i = ; i<n; i++)
for (int j = ; j < m; j++)
{
int t;
cin >> t;
if (t >= && t <= ) map[i][j] = ;
else map[i][j] = ;
} //找起点,即找到开始递归的坐标
for (int i = ; i<n; i++)
{
for (int j = ; j<m; j++)
{
if (map[i][j] && !vis[i][j])
{
vis[i][j] = ;
DFS(i, j);//当递归全部结束后,说明已经不能再找到W与这部分相连
ans ++;
}
}
} cout << ans;
}
return ;
}
ACM-数细胞的更多相关文章
- 数细胞-swust oj
数细胞(0964) 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.编程需要用到的队列及其相关函数已经实现,你只需要完 ...
- ACM——数的计算
数的计算——(递归(超时)和非递归) 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:1050 测试通过:31 ...
- ACM——数的计数
http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1050 数的计数 时间限制(普通/Jav ...
- ACM 数塔
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题 ...
- 自己来实现一个简易的OCR
来做个简易的字符识别 ,既然是简易的 那么我们就不能用任何的第三方库 .啥谷歌的 tesseract-ocr, opencv 之类的 那些玩意是叼 至少图像处理 机器视觉这类课题对我这种高中没毕业的人 ...
- robotframework笔记26
测试数据文档工具(Testdoc) Testdoc是机器人框架内置的工具生成高水平 根据测试用例文档. 创建的文档是在HTML中 格式和它包括名称.文档和其他元数据 测试套件和测试用例,以及和他们的顶 ...
- 做一名开源社区的扫地僧——从Bug report到Google Summer of Code(GSoC):从200个bug到5000美金
今年的软件自由日(SFD),我在广州Linux用户组的线下活动上做了一个分享,主题叫做<做一名开源社区的扫地僧(上)>.我把演讲的内容重新整理扩充, 写出了文字版, 希望可以跟更多朋友分享 ...
- ACM 杭电HDU 2084 数塔 [解题报告]
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- HDU ACM 1134 Game of Connections / 1130 How Many Trees?(卡特兰数)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=1134 [解题背景]这题不会做,自己推公式推了一段时间,将n=3和n=4的情况列出来了,只发现第n项与 ...
随机推荐
- 【剑指Offer面试编程题】题目1370:数组中出现次数超过一半的数字--九度OJ
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2 ...
- java Vector的特点与使用
Vector Vector的数据结构 基于数组,大小可变(数组扩容). Vector与ArrayList的比较 我看了下源码,最大区别就是Vector的方法加了synchronized,是线程安全的 ...
- 二、spring集成ibatis进行数据源事务管理拦截器环境配置
1.dataSource-applicationContext.xml文件配置理解:(spring1.2.8+ibatis1.5.3)1.1)配置数据源 DriverManagerDataSource ...
- [经验] Cocos Creator使用笔记 --- 调用不同脚本下的函数
因为 JavaScript 不同于 Java, 想要调用不同文件的函数的话不能直接 ClassName object = new ClassName(); object.function(param) ...
- CH8 IO库
8.1 #include <iostream> #include <string> #include <sstream> #include <fstream& ...
- Raspbian设置静态ip
Raspbian static ip 最近入手了树莓派4b,并更具官方教程安装了Raspbian.由于直接通过wifi连接,每次ip跳来跳去很不方便,于是便想着设置静态ip. 由于Raspbian本身 ...
- 【Go语言系列】2.2、Go语言基本程序结构:关键字与标识符
什么是标识符 标识符用来命名变量.类型等程序实体.标识符是指Go语言对各种变量.方法.函数等命名时使用的字符序列,标识符由若干个字母.下划线_.和数字组成,且第一个字符必须是字母.通俗的讲就是凡可以自 ...
- leetcode814 Binary Tree Pruning
""" We are given the head node root of a binary tree, where additionally every node's ...
- mysql 子查询问题
今天在做子查询的时候发现运行报错, 我的代码是select* from (....) device des ,我一直以为的是device是表名,然后dec是别名,后面问了同事才知道from(...)这 ...
- CentOS7 部署 Jupyter Notebook
socket.error: [Errno 99] Cannot assign requested address 修改这几处: 1.hostname 参考:https://www.cnblogs.co ...