ECNUOJ 2856 仰望星空
2015-07-05 12:52
225 查看
[b]仰望星空[/b]
Time Limit:1000MS Memory Limit:65536KB
Total Submit:373 Accepted:145
Description
我仰望星空,
它是那样辽阔而深邃;
那无穷的真理,
让我苦苦地求索、追随。
我仰望星空,
它是那样庄严而圣洁;
那凛然的正义,
让我充满热爱、感到敬畏。
我仰望星空,
它是那样自由而宁静;
那博大的胸怀,
让我的心灵栖息、依偎。
我仰望星空,
它是那样壮丽而光辉;
那永恒的炽热,
让我心中燃起希望的烈焰、响起春雷。
星空有无数星座,而今天就请你数一数天空有多少星座。
假设天空为w*h的平面,星座由相邻的星星组成。两颗星相邻的条件为横向或纵向或对角相连。如下图为10*5的天空:
..*.....**
.**..*****
.*...*....
..****.***
..****.***
星星为’*’,空白的部分为’.’,上图星空共有2个星座。
Input
第1行:两个由空格分开的整数,1<=w<=80和1<=h<=1000.
第2到h+1行:每一行包含w个’*’或者’.’,代表星空的组成。
Output
一行:表示当前星空星座的个数。
Sample Input
10 5
..*.....**
.**..*****
.*...*....
..****.***
..****.***
15 8
**.**......*..*
..*.**.*...*...
*.*.**.*****.**
...***.****.**.
...**..*.*.....
*****..*****..*
....**...*..*..
*.*...*.*.*.***
Sample Output
2
7
Source
解题:搜索
View Code
Time Limit:1000MS Memory Limit:65536KB
Total Submit:373 Accepted:145
Description
我仰望星空,
它是那样辽阔而深邃;
那无穷的真理,
让我苦苦地求索、追随。
我仰望星空,
它是那样庄严而圣洁;
那凛然的正义,
让我充满热爱、感到敬畏。
我仰望星空,
它是那样自由而宁静;
那博大的胸怀,
让我的心灵栖息、依偎。
我仰望星空,
它是那样壮丽而光辉;
那永恒的炽热,
让我心中燃起希望的烈焰、响起春雷。
星空有无数星座,而今天就请你数一数天空有多少星座。
假设天空为w*h的平面,星座由相邻的星星组成。两颗星相邻的条件为横向或纵向或对角相连。如下图为10*5的天空:
..*.....**
.**..*****
.*...*....
..****.***
..****.***
星星为’*’,空白的部分为’.’,上图星空共有2个星座。
Input
第1行:两个由空格分开的整数,1<=w<=80和1<=h<=1000.
第2到h+1行:每一行包含w个’*’或者’.’,代表星空的组成。
Output
一行:表示当前星空星座的个数。
Sample Input
10 5
..*.....**
.**..*****
.*...*....
..****.***
..****.***
15 8
**.**......*..*
..*.**.*...*...
*.*.**.*****.**
...***.****.**.
...**..*.*.....
*****..*****..*
....**...*..*..
*.*...*.*.*.***
Sample Output
2
7
Source
解题:搜索
#include <bits/stdc++.h> #define pii pair<int,int> using namespace std; int w,h; char table[1010][90]; const int dir[8][2] = { -1,0,1,0,0,-1,0,1, -1,-1,1,1,-1,1,1,-1 }; bool isIn(int x,int y) { return x >= 0 && x < h && y >= 0 && y < w; } queue< pii >q; void bfs(int x,int y) { while(!q.empty()) q.pop(); q.push(pii(x,y)); table[x][y] = '.'; while(!q.empty()) { pii now = q.front(); q.pop(); for(int i = 0; i < 8; ++i) { x = now.first + dir[i][0]; y = now.second + dir[i][1]; if(isIn(x,y) && table[x][y] == '*') { q.push(pii(x,y)); table[x][y] = '.'; } } } } int main() { while(~scanf("%d%d",&w,&h)) { for(int i = 0; i < h; ++i) scanf("%s",table[i]); int ret = 0; for(int i = 0; i < h; ++i) { for(int j = 0; j < w; ++j) { if(table[i][j] == '*') { ret++; bfs(i,j); } } } printf("%d\n",ret); } return 0; }
View Code
相关文章推荐
- nginx集群和动静分离初步配置
- 安卓自学笔记第二章——页面展现和数据存储(1)
- OpenCV开发环境配置-Windows/MinGW/Clion/CMake
- QGraphicsView 框架学习(四),Undo Redo
- Unity 3D酷跑类游戏场景循环
- 使用Dom4j解析XML
- 设计模式之原型模式
- iOS多线程编程之NSThread
- 什么才是好结果
- redhat 刚安装后登录不了,修改root的密码
- 【IT基础】正则表达式集
- Annotation不提示
- Annotation没有提示
- 世界各国语言学习网站大全
- c++面试题
- MySQL存储过程之计算某列值之和小于固定值的所有累加行ID
- 《java课程设计》之猜猜看游戏(一)
- Ubuntu14环境下minigui安装问题记录--object.lo错误
- 开发中遇到的问题
- xml的两种解析方式