UVA572(油田)简单的深搜问题
2014-04-02 20:11
351 查看
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=513#include "stdio.h"
#include <iostream>
#include <string.h>
using namespace std;
int vis[150][150];
char mat[150][150];
void dfs(int x,int y){
if(mat[x][y]=='*'||vis[x][y])
return ;
vis[x][y]=1;
dfs(x-1,y-1);dfs(x-1,y);dfs(x-1,y+1);
dfs(x,y-1); dfs(x,y+1);
dfs(x+1,y-1);dfs(x+1,y);dfs(x+1,y+1);
}
int main(){
int m,n;
string s;
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(mat,'*',sizeof(mat));
memset(vis,0,sizeof(vis));
if(m==0&&n==0)
return 0;
else
for(int i=0;i<m;i++){
cin>>s;
for(int j=0;j<n;j++)
mat[i+1][j+1]=s[j];
}
int count=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
{
if(!vis[i][j]&&mat[i][j]=='@')
{
count++;dfs(i,j);
}
}
}
cout<<count<<endl;
}
return 0;
}
#include <iostream>
#include <string.h>
using namespace std;
int vis[150][150];
char mat[150][150];
void dfs(int x,int y){
if(mat[x][y]=='*'||vis[x][y])
return ;
vis[x][y]=1;
dfs(x-1,y-1);dfs(x-1,y);dfs(x-1,y+1);
dfs(x,y-1); dfs(x,y+1);
dfs(x+1,y-1);dfs(x+1,y);dfs(x+1,y+1);
}
int main(){
int m,n;
string s;
while(scanf("%d%d",&m,&n)!=EOF)
{
memset(mat,'*',sizeof(mat));
memset(vis,0,sizeof(vis));
if(m==0&&n==0)
return 0;
else
for(int i=0;i<m;i++){
cin>>s;
for(int j=0;j<n;j++)
mat[i+1][j+1]=s[j];
}
int count=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++)
{
if(!vis[i][j]&&mat[i][j]=='@')
{
count++;dfs(i,j);
}
}
}
cout<<count<<endl;
}
return 0;
}
相关文章推荐
- 油田问题 UVA 572
- UVA572油田问题(DFS求连通块)
- 油田问题 UVA 572
- 油田(Oil Deposits,UVa 572)
- UVa 572 油田(DFS求连通块)
- Uva 572 Oil Deposits 油田 (DFS求连通块)
- UVA 11137 - Ingenuous Cubrency(简单背包问题)
- 油田(Oil Deposits,UVa 572)
- Uva572-油田
- uva 572 Oil Deposits(油田)—— DFS
- 油田UVA 572
- UVA 572- Oil Deposits(简单dfs)
- uva 572 简单的深搜
- UVA 11137 Ingenuous Cubrency 类似硬币问题的简单dp
- 01背包问题【简单背包,UVA624】
- Oil Deposits - UVa 572 简单搜索
- UVa-572油田
- UVA-575-Skew Binary (简单数论问题)
- uva572 油田 连通块遍历
- 例题 6-12 油田 UVa 572 用dfs求连通块