NYOJ 最大岛屿----1237第八届
2016-05-29 19:18
423 查看
#include<stdio.h> #include<string.h> char pic[505][505]; int m,n,idx[505][505]; void dfs(int r,int c,int id){ if(r<0||r>=m||c<0||c>=n) return ; if(idx[r][c]>0||pic[r][c]!='1') return ; idx[r][c]=id; for(int dr=-1;dr<=1;dr++) for(int dc=-1;dc<=1;dc++) if(dr!=0||dc!=0) dfs(r+dr,c+dc,id); } int main(){ char c,ch; int t; int k; while(scanf("%d%d%d",&m,&n,&t)!=EOF){ ch=getchar(); for(int i=0;i<m;i++){ k=0; while((c=getchar())!='\n'){ if(c!=' ') pic[i][k++]=c; } } // puts(""); // for(int i=0;i<m;i++) // printf("%s\n",pic[i]); memset(idx,0,sizeof(idx)); int cnt=0; for(int i=0;i<m;i++) for(int j=0;j<n;j++) if(idx[i][j]==0&&pic[i][j]=='1') dfs(i,j,++cnt); // for(int i=0;i<m;i++){ // for(int j=0;j<n;j++) // printf("%d ",idx[i][j]); // puts(""); // } int maxn=0,num; for(int k=1;k<=cnt;k++){ num=0; for(int i=0;i<m;i++) for(int j=0;j<n;j++) if(idx[i][j]==k) num++; if(maxn<num) maxn=num; } long long area=maxn*t; printf("%d %ld\n",cnt,area); } return 0; }
相关文章推荐
- 字符串的旋转问题
- nodeName - nodeValue
- Java中为什么要使用内部类
- 第二阶段--团队冲刺--第七天
- NYOJ Interference Signal---1242
- 修改Android文件选择器开源控件aFileChooser 增加多选功能
- Java内部类的作用
- 个人工作总结03(第二次冲刺)
- 实现servlet的转发和读取Web应用中资源文件【持续更新】
- Java内部类的使用小结
- BOM和DOM
- 【Java】常用二叉树考点
- Linux系统启动流程 图解
- HBase总结(十一)hbase Java API 介绍及使用示例
- 练习打字第十六天!
- Mac OS X搭建基于hexo的静态博客站点
- 日期计算
- 模拟算法练习
- android安卓Sqlite数据库实现用户登录注册
- android安卓Sqlite数据库实现用户登录注册