第八届河南省程序设计大赛-B.最大岛屿0000110011000000
来源:互联网 发布:游戏优化怎么做 编辑:程序博客网 时间:2024/05/17 02:54
最大岛屿
时间限制:1000 ms | 内存限制:65535 KB
- 描述
神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等。加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王。 这是一个由海洋、岛屿和海盗组成的危险世界。面对危险重重的海洋与诡谲的对手,如何凭借智慧与运气,建立起一个强大的海盗帝国。
杰克船长手头有一张整个海域的海图,上面密密麻麻分布着各个海屿的位置及面积。他想尽快知道整个海域共有多少岛屿以及最大岛屿的面积。
- 输入
- 第1行:M N T,表示海域的长,宽及一个单位表示的面积大小
接下来有M行 ,每行有N个01组成的序列以及其中穿插一些空格。0表示海水,1表示陆地,其中的空格没用,可以忽略掉。 - 输出
- 输出一行,有2个整数,一个空格间隔,表示整个海域的岛屿数,以及最大岛屿的面积
最大岛屿
时间限制:1000 ms | 内存限制:65535 KB- 描述
神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等。加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王。 这是一个由海洋、岛屿和海盗组成的危险世界。面对危险重重的海洋与诡谲的对手,如何凭借智慧与运气,建立起一个强大的海盗帝国。
杰克船长手头有一张整个海域的海图,上面密密麻麻分布着各个海屿的位置及面积。他想尽快知道整个海域共有多少岛屿以及最大岛屿的面积。
- 输入
- 第1行:M N T,表示海域的长,宽及一个单位表示的面积大小
接下来有M行 ,每行有N个01组成的序列以及其中穿插一些空格。0表示海水,1表示陆地,其中的空格没用,可以忽略掉。 - 输出
- 输出一行,有2个整数,一个空格间隔,表示整个海域的岛屿数,以及最大岛屿的面积
- 样例输入
8 16 99
00000000 00000000
0001111000111000
0000000 00 0000000
00111 111000001 10
001110000 0000000
0100001111 111100
0000000000000000
- 样例输出
5 990
- 提示
- ①若一个陆地八个方向之一(上、下、左、右、左上、右上、左下、右下)的位置也是陆地,则视为同一个岛屿。
② 假设第一行,最后一行,第一列,最后一列全为0.
③ 1<M, N≤500 1<T≤100000 - 来源
- 第八届河南省程序设计大赛
#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int N=500+10;char a[N][N<<1];int sum1;long long sum2,sum3;int dx[8]= {0,0,-1,-1,-1,1,1,1};int dy[8]= {1,-1,0,-1,1,0,-1,1};void dfs(int x,int y){ a[x][y]='0';//搜索过就标为0,然后继续往八个方向继续搜索; sum2=max(sum2,sum3);//把最大面积求出来; for(int i=0; i<8; i++) { int xx=x+dx[i],yy=y+dy[i];//八个方向; if(a[xx][yy]=='1')//只要为一就继续搜索,然后面积加一; { sum3++; dfs(xx,yy); } }}void xiao(char* a,int x)//消去空格;{ for(int i=0; i<x; i++) if(a[i]==' ') { for(int j=i; j<x; j++) a[j]=a[j+1];//整体前移; x--; i--;可能会有连续几个空格,所以还要判断当前被覆盖的位置是不是空格; }}int main(){ int n,m,t; int i,j; memset(a,0,sizeof(a)); scanf("%d%d%d",&n,&m,&t); getchar(); for(i=0; i<n; i++) { gets(a[i]); int x=strlen(a[i]); if(x!=m) xiao(a[i],x); } sum1=sum2=sum3=0; for(i=0; i<n; i++) for(j=0; j<m; j++) { if(a[i][j]=='1') { sum1++;//搜索过就变为0了,所以可求出有几块不相邻的岛屿; sum3=1; dfs(i,j); } } sum2*=t; printf("%d %I64d\n",sum1,sum2);}
0 0
- 第八届河南省程序设计大赛-B.最大岛屿0000110011000000
- 第八届河南省程序设计大赛 B 最大岛屿(bfs)
- nyoj1237 最大岛屿(河南省第八届acm程序设计大赛)
- NYOJ_5739最大岛屿(河南省第八届acm程序设计大赛)
- nyoj 1237 最大岛屿 第八届河南省程序设计大赛
- 第八届河南省程序设计大赛-NYOJ-1237-最大岛屿(DFS)
- 第八届河南省ACM省赛 - B - 最大岛屿
- 第八届河南省赛 zzuoj 10407: B.最大岛屿
- 第八届河南省程序设计大赛
- 河南省第八届程序设计大赛有感
- NYOJ_5743Distribution(第八届河南省程序设计大赛)
- NYOJ_5743Distribution(第八届河南省程序设计大赛)
- 最少换乘 第八届河南省程序设计大赛
- 引水工程 第八届河南省程序设计大赛
- 河南省第八届省赛(最大岛屿)
- 问题 B: 最大岛屿 河南省第九届省赛
- 最大岛屿 第八届
- 河南省第八届程序设计大赛 最短路Dijkstra 最小换乘+
- Cookie和Session
- 翻转问题(开关,开灯问题)求解技巧
- 解决C# FileUpload上传文件过大的时候出现的错误
- 【引用】 PB绝对有用的未公开函数
- 几个常见工具的使用
- 第八届河南省程序设计大赛-B.最大岛屿0000110011000000
- 逆向工程实战--Afkayas.1
- 逻辑回归(代价函数,梯度下降) logistic regression--cost function and gradient descent
- Lightoj-1356 Prime Independence(质因子分解&&二分图最大独立集)
- error:const char *类型的实参与LPCWSTR类型的形参不兼容
- android中的@{} @+id ?/attr
- POJ 2192 Zipper
- AlertDialog.Builder setCancelable用法
- Spring 属性注入的实现原理