ACM PKU 1562 Oil Deposits 深度優(yōu)先搜索
Source Code
Problem: 1562 User: lnmm
Memory: 96K Time: 0MS
Language: C++ Result: Accepted 
Source Code
#include "stdio.h"
#include "iostream.h"
bool visited[101][101];
char map[101][101];
int m,n,i,j;
int d[8][2]=
{
{1,0},
{1,1},
{1,-1},
{0,-1},
{0,1},
{-1,0},
{-1,1},
{-1,-1}};
bool In(int x,int y)

{
return x>0&&y>0&&y<=n&&x<=m;
}

void Search(int x,int y)

{
visited[x][y]=true;
for(int i=0;i<8;i++)
if( In(x+d[i][0],y+d[i][1])&&map[x+d[i][0]][y+d[i][1]]=='@'&&!visited[x + d[i][0]][y + d[i][1]])
Search(x + d[i][0], y + d[i][1]);
}
int solves()

{
int count=0;
visited[i][j]=true;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(map[i][j]=='@'&&!visited[i][j])
{Search(i,j);
++count; }
return count;
}
void main()
{
while(cin >> m >> n && (m || n))
{
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
cin>>map[i][j];
visited[i][j]=false;
}
}
cout<<solves()<<endl;
}

}
很簡單的深度優(yōu)先搜索,純屬練手.
簡單得就像是在完全套用模板...
開始用scanf來讀map[i][j],缺老報錯,百思不得其解???
后來改用萬能的iostream ,還好測試數(shù)據(jù)比較弱,仍然0ms通過
iostream才是王道...

