nyoj1237 最大島嶼(河南省第八屆acm程序設計大賽)
阿新 • • 發佈:2017-08-05
string.h printf 對手 target pid problem 如果 article span
- 題目1237
pid=1237" style="color:rgb(55,119,188)">題目信息
- 執行結果
- 本題排行
- 討論區
最大島嶼
時間限制:1000 ms | 內存限制:65535 KB 難度:2- 描寫敘述
-
神奇的海洋。驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?傑克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最後成為海盜王。
這是一個由海洋、島嶼和海盜組成的危急世界。面對危急重重的海洋與詭譎的對手。怎樣憑借智慧與運氣。建立起一個強大的海盜帝國。
傑克船長手頭有一張整個海域的海圖,上面密密麻麻分布著各個海嶼的位置及面積。他想盡快知道整個海域共同擁有多少島嶼以及最大島嶼的面積。
- 輸入
- 第1行:M N T。表示海域的長,寬及一個單位表示的面積大小
接下來有M行 ,每行有N個01組成的序列以及當中穿插一些空格。0表示海水,1表示陸地,當中的空格沒用,能夠忽略掉。
- 輸出
- 輸出一行。有2個整數,一個空格間隔,表示整個海域的島嶼數。以及最大島嶼的面積
- 例子輸入
-
8 16 9900000000 00000000000011001100000000011110001110000000000 00 000000000111 111000001 10001110000 00000000100001111 1111000000000000000000
- 例子輸出
-
5 990
- 提示
- ①若一個陸地八個方向之中的一個(上、下、左、右、左上、右上、左下、右下)的位置也是陸地。則視為同一個島嶼。
② 如果第一行,最後一行。第一列,最後一列全為0.
③ 1<M, N≤500 1<T≤100000 - 來源
source=%E7%AC%AC%E5%85%AB%E5%B1%8A%E6%B2%B3%E5%8D%97%E7%9C%81%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E5%A4%A7%E8%B5%9B" style="color:rgb(55,119,188)">第八屆河南省程序設計大賽
- 上傳者
- hnu_acm
#include <stdio.h> #include <string.h> char map[505][505]; bool vis[505][505]; int max=0; void dfs(int x,int y) { if(map[x][y]=='0'||vis[x][y]==true) return ; max++; vis[x][y]=true; dfs(x,y+1); dfs(x,y-1); dfs(x-1,y); dfs(x+1,y); dfs(x+1,y+1); dfs(x+1,y-1); dfs(x-1,y+1); dfs(x-1,y-1); } int main() { int m,n,x; while(~scanf("%d %d %d",&m,&n,&x)) { memset(vis,false,sizeof(vis)); memset(map,0,sizeof(map)); for(int i=0;i<m;i++) { getchar(); for(int j=0;j<n;j++) { char ch=getchar(); if(ch==' ') j--; else map[i][j]=ch; } } int Max=0,count=0; for(int i=0;i<m;i++) for(int j=0;j<n;j++) { if(map[i][j]=='1'&&!vis[i][j]) { max=0; dfs(i,j); if(max>Max) Max=max; count++; } } printf("%d %d\n",count,Max*x); } return 0; }
nyoj1237 最大島嶼(河南省第八屆acm程序設計大賽)