问题描述
- poj1064那道题,我的代码怎么老是不通过?
-
#include
#include
#include
#include
using namespace std;
int m,n;
char map[105][105];
void dfs(int x,int y)
{//现在的位置是(x,y)
map[x][y]='*';//将现在的位置替换为.
//循环遍历移动8个方向
for(int dx=-1;dx<=1;dx++)
{//向x方向移动x,向y方向移动y,移动结果是(nx,ny)
for(int dy=-1;dy<=1;dy++)
{
int nx=x+dx;
int ny=dy+y;
//判断(nx,ny)是否在院子里,以及是否有积水
if(nx>=0&&nx=0&&ny<m&&map[nx][ny]=='@')
dfs(nx,ny);
}
}
}
void solve()
{
int i,j;
int ans=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(map[i][j]=='@')
{//从有水的地方开始dfs
dfs(i,j);
ans++;
}
}
}
printf("%dn",ans);
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&m)!=EOF&&n&&m)
{
getchar();//在这多加了一个getchar(),让我WA了一上午!!!
for(i=0;i<n;i++)
{
getchar();
for(j=0;j<m;j++)
{
scanf("%c",&map[i][j]);
}
}
solve();
}return 0;
}
时间: 2024-09-24 21:05:38