最大岛屿 第八届
最大島嶼
時間限制:1000?ms ?|? 內存限制:65535?KB 難度:2 描述神秘的海洋,驚險的探險之路,打撈海底寶藏,激烈的海戰,海盜劫富等等。加勒比海盜,你知道吧?杰克船長駕駛著自己的的戰船黑珍珠1號要征服各個海島的海盜,最后成為海盜王。??這是一個由海洋、島嶼和海盜組成的危險世界。面對危險重重的海洋與詭譎的對手,如何憑借智慧與運氣,建立起一個強大的海盜帝國。
杰克船長手頭有一張整個海域的海圖,上面密密麻麻分布著各個海嶼的位置及面積。他想盡快知道整個海域共有多少島嶼以及最大島嶼的面積。
輸入接下來有M行 ,每行有N個01組成的序列以及其中穿插一些空格。0表示海水,1表示陸地,其中的空格沒用,可以忽略掉。
② 假設第一行,最后一行,第一列,最后一列全為0.
③ 1<M, N≤500 1<T≤100000
AC代碼:
#include<iostream> #include<cstdio> #include<cmath> using namespace std; char c[501][501]; int m,n,t,k; void DFS(int x,int y){if(c[x][y]!='1'||x<0||y<0||x>=m||y>=n)return;else{c[x][y]='0';t++;DFS(x-1,y-1);DFS(x-1,y);DFS(x-1,y+1);DFS(x,y+1);DFS(x,y-1);DFS(x+1,y-1);DFS(x+1,y);DFS(x+1,y+1);} } int main() {int i,j,sum;int maxn;while(~scanf("%d %d %d",&m,&n,&k)){maxn=sum=0;for(i=0;i<m;i++)for(j=0;j<n;j++)cin>>c[i][j];for(i=0;i<m;i++)for(j=0;j<n;j++)if(c[i][j]=='1'){t=0;DFS(i,j);sum++;maxn=max(maxn,t);} printf("%d %d\n",sum,maxn*k);}return 0; }總結
- 上一篇: Linux系统(Centos)下安装no
- 下一篇: JAVA字符串占位符替换