您的位置:首页 > 其它

HDU - 1241 Oil Deposits

2015-08-10 20:22 316 查看
题目要求:求油田个数(直接相邻或对角相邻的@ 算一个油田)

解题感悟:

1. 这道题使用了利用了DFS的思想;

2. 填充的方法着实不错~~。



#include<stdio.h>
#include<string.h>
#define MAXN 105

char plot[MAXN][MAXN];

void dfs(int i,int j);

int main(void){

int i,j;
int row,col,sum;
while(scanf("%d %d",&row,&col) && row && col){
memset(plot,'*',sizeof(plot));     //将方阵每次初始化为'*'阵

for(i=1;i<=row;++i)                //输入方阵
scanf("%s",plot[i]+1);

for(i = 1,sum = 0;i <= row; ++i)   //遍历方阵
for(j = 1;j <= col; ++j)
if(plot[i][j]=='@'){
sum++;             //油田+1
dfs(i,j);          //将与(i,j)相连的油田全填充为'*';
}
printf("%d\n",sum);
}
return 0;
}
//油田填充
void dfs(int i,int j){
plot[i][j]='*';
int m,n;
for(m=-1;m<2;++m)
for(n=-1;n<2;++n){
if(plot[i+m][j+n]=='@'){
plot[i+m][j+n]='*';
dfs(i+m,j+n);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: