*题意:相同油田打一个井,求oil deposits的个数
*思路:利用返回,使用dfs求解。DFS搜索了几次,就有几个满足题目要求的Oil Deposits。
*AC源码
#include <iostream>
using namespace std;
char s[102][102];
int m,n;
int i,j;
void dfs(int x,int y)
{
if(x<1||x>m||y<1||y>n)
return ;
if(s[x][y]!='@')
return ;
s[x][y]='*';
for(int i=-1;i<=1;i++)
for(int j=-1;j<=1;j++)
{
dfs(x+i,y+j);
}
}
int main()
{
while(cin>>m>>n&&m)
{
int c=0;
for(i=1;i<=m;++i)
for(j=1;j<=n;j++)
cin>>s[i][j];
for(i=1;i<=m;++i)
for(j=1;j<=n;++j)
{
if(s[i][j]=='@')
{
dfs(i,j);
c++;
}
}
cout<<c<<endl;
}
}
Oil Deposits
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 107 Accepted Submission(s) : 54
1 1<br>*<br>3 5<br>*@*@*<br>**@**<br>*@*@*<br>1 8<br>@@****@*<br>5 5 <br>****@<br>*@@*@<br>*@**@<br>@@@*@<br>@@**@<br>0 0 <br>
0<br>1<br>2<br>2<br>