您的位置:首页 > 其它

【首先膜拜大湿】poj-2386-Lake Counting-DFS模板题

2013-11-05 20:38 495 查看
Lake Counting
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 16802 Accepted: 8523
DescriptionDue 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 figureout 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.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.Output* Line 1: The number of ponds in Farmer John's field.Sample Input
10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.
Sample Output
3
题目如上:
AC代码如下:
#include<iostream>#include<stdio.h>#define Max 105using namespace std;char f[Max][Max];int N ,M;void DFS(int x,int y){f[x][y] = '.';for(int dx = -1; dx <= 1; dx++)for(int dy = -1; dy <= 1; dy++){int nx, ny;nx = x + dx; ny = y + dy;if(nx < N&& ny < M&& nx >= 0&& ny >= 0&&f[nx][ny] == 'W') DFS(nx,ny);}return ;}int main(){int res = 0,i,j;cin>>N;cin>>M;for(i = 0; i < N; i++)scanf("%s",&f[i]);for(int i = 0; i < N; i++)for(int j = 0; j < M; j++)if(f[i][j] == 'W'){DFS(i,j);res++;}printf("%d\n",res);}
【存在的问题】1、脑残地把坐标轴坐标和矩阵的坐标对应起来了;
2、解决了以上问题后程序还是在傲娇地RE,原来还是脑残地把“=”敲成“==”了;
再后来程序还傲娇地WA了,于是           
3、经大湿的指点把原输入
for(i = 0; i < N; i++)
for(j = 0; j < M; j++)
scanf("%c",&f[i][j]);
换成了
 for(i = 0; i < N; i++)
scanf("%s", &f[i]);
蓝后就AC了~~o(≧v≦)o~~
原因就是%c输入把换行符给吃掉了~~蓝后造成了移位。。。。
ORZ。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dfs