二维数组练习17_最好的草
2017-08-29 14:44
267 查看
/* Name: 17_最好的草 Author: 巧若拙 Description: 描述 奶牛Bessie计划好好享受柔软的春季新草。新草分布在R行C列的牧场里。它想计算一下牧场中的草丛数量。 在牧场地图中,每个草丛要么是单个“#”,要么是有公共边的相邻两个“#”。给定牧场地图,计算有多少个草丛。 例如,考虑如下5行6列的牧场地图 .#.... ..#... ..#..# ...##. .#.... 这个牧场有5个草丛:一个在第一行,一个在第三列横跨了二、三行,一个在第三行, 一个在第四行横跨了四、五列,最后一个在第五行。 输入 第一行包含两个整数R和C,中间用单个空格隔开。 接下来R行,每行C个字符,描述牧场地图。字符只有“#”或“.”两种。(1 <= R, C <= 100 ) 输出 输出一个整数,表示草丛数。 样例输入 5 6 .#.... ..#... ..#..# ...##. .#.... 样例输出 5 */ #include <iostream> using namespace std; const int M = 100; const int N = 100; char A [M]; int main() { int m, n; cin >> n >> m; for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { cin >> A[i][j]; } } int s = (A[0][0] == '#'); //先看左上角是否是草丛 for (int j=1; j<m; j++)//先统计第1行 { s += (A[0][j] == '#' && A[0][j-1] != '#'); } for (int i=1; i<n; i++)//先统计第1列 { s += (A[i][0] == '#' && A[i-1][0] != '#'); } for (int i=1; i<n; i++) { for (int j=1; j<m; j++)//左方和上方是草丛时不能重复记录 { s += (A[i][j] == '#' && A[i-1][j] != '#' && A[i][j-1] != '#'); } } cout << s << endl; return 0; }
相关文章推荐
- 动态规划练习一 17:开餐馆
- Java 二维数组练习-----字符界面的扫雷
- Python练习实例17字符操作
- 二维数组,指针数组,指向指针数组的指针的应用练习〈一〉
- 第6章_数组_编程练习_Exercise6_25(二维数组的相乘)
- java基础练习 17
- 牛客网python算法练习(三)二维数组的查找
- 二维数组查找练习
- 算法练习 17:回文串
- 17-集合框架-14-常用对象API(集合框架-LinkedList集合-练习(堆栈和队列))
- 练习1-17 编写一个程序,打印长度大于80个字符的所有输入行。
- [iOS]C语言技术视频-17-指针变量高级用法练习二(使用堆内存完成链表结构的存储)
- java数组练习2创建二维数组,并将数组中的内容输出到控制台
- 二维数组基础练习1
- 【学习记录】5.二维数组以及数组练习挑战
- 华为-on练习--身高找到最好的二人
- python 练习 17
- SSH与SSM学习之SSH实现CRM练习17——添加客户拜访记录和列表
- 课堂练习之环形二维数组
- 指针练习-17