POJ 2386
来源:互联网 发布:大数据工程师医疗 编辑:程序博客网 时间:2024/06/04 16:15
Lake Counting
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 35731 Accepted: 17734
Description
Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors.
Given a diagram of Farmer John's field, determine how many ponds he has.
Given a diagram of Farmer John's field, determine how many ponds he has.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them.
* Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them.
Output
* Line 1: The number of ponds in Farmer John's field.
Sample Input
10 12W........WW..WWW.....WWW....WW...WW..........WW..........W....W......W...W.W.....WW.W.W.W.....W..W.W......W...W.......W.
Sample Output
3
题意:有一个大小为n*m的园子,求出水洼的个数,一个W是一个水洼,多个连着的W也是一个水洼,也就是一个或者多个连着的W组成一个水洼,W表示积水,'.'表示没有积水
这道题目贼坑!算是深搜里的水题了吧!
我用了两种表示方式做
(1)
#include<stdio.h>int n,m;char field[1000][1000];int res;void dfs(int x,int y ){ int dx,dy,nx,ny; field[x][y]='.';//讲现在所在的位置替换为'.' for(dx=-1;dx<=1;dx++) { for(dy=-1;dy<=1;dy++) { nx=dx+x; ny=dy+y; if(0<=nx&&nx<n&&0<=ny&&ny<m&&field[nx][ny]=='W')dfs(nx,ny);//判断(nx,ny)是不是在园子里,是否有积水 } }}int main(){ int i,j; scanf("%d%d",&n,&m); for(i=0;i<n;i++) { getchar(); for(j=0;j<m;j++) { scanf("%c",&field[i][j]); } } res=0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(field[i][j]=='W') { dfs(i,j); res++; } } } printf("%d\n",res); return 0;}(2)
#include<stdio.h>char map[1000][1000];int n,m;int a[8][2]={{1,1},{1,0},{1,-1},{0,1},{0,-1},{-1,0},{-1,1},{-1,-1}};int ans;void dfs(int x,int y){ int i,dx,dy; map[x][y]='.'; for(i=0;i<8;i++) { dx=x+a[i][0]; dy=y+a[i][1]; if(dx>=0&&dx<n&&dy>=0&&dy<m&&map[dx][dy]=='W') dfs(dx,dy); }}int main(){ int i,j; scanf("%d%d",&n,&m); for(i=0;i<n;i++) { getchar(); for(j=0;j<m;j++) { scanf("%c",&map[i][j]); } } ans=0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(map[i][j]=='W') { dfs(i,j); ans++; } } } printf("%d\n",ans); return 0;}
阅读全文
0 0
- POJ 2386
- POJ 2386
- POJ 2386
- POJ 2386
- poj 2386
- poj 2386
- POJ 2386
- POJ-2386
- POJ 2386
- poj 2386
- poj 2386
- POJ 2386
- POJ 2386
- POJ 2386
- POJ 2386
- POJ 2386
- POJ 2386
- poj 2386 Lake Counting
- UVA 11651 Krypton Number System(矩阵加速DP)
- U盘安装Linux安装报错及解决方案
- 无法加载php_exifUnable to load dynamic library 'D:/AppServ\php5\ext\php_exif.dll'
- 一招新的技能 React中的Context
- 在线机器学习FTRL(Follow-the-regularized-Leader)算法介绍
- POJ 2386
- 第九场个人训练赛
- 自定义百度网盘分享密码提取码
- CDH安装出现 BUG 正在获取安装锁.. BEGIN flock 4
- Android 山寨机进入Recovery界面进行刷机、双清
- 百度云(BAE)文件上传目录问题-yellowcong
- JSP入门(三)
- 台阶问题
- 一维数组之求一个数组所有元素之和与平均值,并写出大于平均值的元素与其对应的下标。