本题链接:点击打开链接
本题是要判断石油矿的个数,选取一点,判断其四周八个方向是否有石油,然后将其做标记,使下次不会重复找,采用
递归算法代码如下:
#include<stdio.h>
char a[110][110];
int n,m;
void dfs(int x,int y){
if(a[x][y]!='@'||x<0||x>n||y<0||y>m)
return ;
else{
a[x][y]='*';
dfs(x,y-1);
dfs(x,y+1);
dfs(x-1,y);
dfs(x-1,y-1);
dfs(x-1,y+1);
dfs(x+1,y);
dfs(x+1,y-1);
dfs(x+1,y+1);
}
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF&&(n|m)){
int i,j,sum=0;
getchar();
for(i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%c",&a[i][j]);
}
getchar();
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(a[i][j]=='@'){
dfs(i,j);
sum++;
}
}
}
printf("%d\n",sum);
}
return 0;
}