Sample Input
1 1
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0
Sample Output
0
1
2
2
#include<cstdio>
#include<iostream>
using namespace std;
char s[102][102];
int dir[8][2]=
{
{1,0},
{1,1},
{1,-1},
{0,-1},
{0,1},
{-1,0},
{-1,1},
{-1,-1}
};
int n,m;
void dfs(int i,int j)
{
s[i][j]='*';
for(int k=0;k<8;k++)
{
int x=i+dir[k][0];
int y=j+dir[k][1];
if(x>=0&&x<n&&y>=0&&y<m&&s[x][y]=='@')
dfs(x,y);
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
int i,j;
if(n==0||m==0) break;
int ans=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>s[i][j];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(s[i][j]=='@')
{
dfs(i,j);
ans++;
}
printf("%d\n",ans);
}
}
1.输入要用 cin 或者 scanf(“%s”,s[i]);
2.dfs中int k不用·i 和 j(已经用过,形参)。