hihoCoder1310—岛屿(搜索)
来源:互联网 发布:淘宝男质量好的店铺 编辑:程序博客网 时间:2024/04/28 12:29
题目链接:传送门
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
5 7.####.. .....#. ####.#. .....#. ..##.#.
- 样例输出
4 2 3
描述
给你一张某一海域卫星照片,你需要统计:
1. 照片中海岛的数目
2. 照片中面积不同的海岛数目
3. 照片中形状不同的海岛数目
其中海域的照片如下,"."表示海洋,"#"表示陆地。在"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。
.####.. .....#. ####.#. .....#. ..##.#.
上图所示的照片中一共有4座岛屿;其中3座面积为4,一座面积为2,所以不同面积的岛屿数目是2;有两座形状都是"####",所以形状不同的岛屿数目为3。
输入
第一行包含两个整数:N 和 M,(1 ≤ N, M ≤ 50),表示照片的行数和列数。
以下一个 N * M 的矩阵,表示表示海域的照片。
输出
输出3个整数,依次是照片中海岛的数目、面积不同的海岛数目和形状不同的海岛数目。
#include <cstdio> #include <cstring> #include <cmath> #include <iostream> #include <queue>#include <set>#include <string>#include <stack>#include <algorithm>#include <map>#include <bitset>using namespace std; typedef long long ll;const int N = 60;const int M = 1000009;const int INF = 0x3fffffff;const int mod = 1e9+7;const double Pi = acos(-1.0);const double sm = 1e-9;typedef pair<int,int>PA;char data[N][N];int vis[N][N],tot,r0,c0;int x[] = { -1 , 0 , 1 , 0 };int y[] = { 0 , -1 , 0 , 1 };char re[] = {'l','u','r','d'};vector<PA>st;bool comp(const PA&a ,const PA&b ){if(a.first==b.first) return a.second<b.second;else return a.first<b.first;}void dfs( int r , int c ) {++tot;vis[r][c] = 1;st.push_back(PA(r-r0,c-c0));for( int i = 0 ; i < 4 ; ++i ){int nr = r+x[i];int nc = c+y[i];if( data[nr][nc] != '#'||vis[nr][nc] != 0 ) continue;dfs( nr , nc );}}int main(){int n,m;while( cin >> n >> m ){memset( vis , 0 , sizeof(vis) );memset( data , 0 , sizeof(data) );for( int i = 1 ; i <= n ; ++i ){cin >> data[i]+1;}map<vector<PA>,int>mp1;map<int,int>mp2;int cnt1=0;for( int i = 1 ; i <= n ; ++i ){for( int j = 1 ; j <= m ; ++j ){if( data[i][j] == '#'&& !vis[i][j] ){tot = 0; st.clear();r0 = i,c0 = j;dfs(i,j);sort(st.begin(),st.end(),comp);++cnt1;++mp2[tot];++mp1[st];}}}cout << cnt1 << " " << mp2.size() << " " << mp1.size() << endl;}return 0;}
阅读全文
0 0
- hihoCoder1310—岛屿(搜索)
- hihoCoder1310 岛屿 (dfs)
- 最大岛屿(dfs)
- 小白成长日记(15)--岛屿面积问题(算法设计--dfs深度优先搜索)
- 深度优先搜索与广度优先搜素(岛屿的面积有多大)
- 岛屿的个数(LintCode)
- nyoj1237 最大岛屿(深搜)
- 岛屿的数量(思维)
- 离散化——USACO 岛屿
- LintCode——岛屿的个数
- JZOJ 3.10 1540——岛屿
- 岛屿算法实现——JAVA
- 河南省第八届省赛(最大岛屿)
- 【南理oj】1237 - 最大岛屿(dfs)
- 岛屿面积有多大(Dfs)
- 岛屿面积有多大(dfs算法)
- 最大岛屿---深搜(记录个数)
- NYOJ 1237 最大岛屿(DFS)
- Android UI生成随机颜色
- innodb buffer pool管理--数据页的访问
- 异常
- 观察者模式与Fragment间通信
- Jackson系统给您介绍何为娱乐文化优先股!
- hihoCoder1310—岛屿(搜索)
- 多线程情况下单例的写法
- 欢迎使用CSDN-markdown编辑器
- java接口
- MNIST例子构建tensorflow Android应用
- 新闻客户端
- Java exception throws && throw 的区别
- NAT技术与代理服务器调研
- 登录OneDrive