DFS应用

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 char a[105][105];
 5 int dx[9]={0,-1,-1,-1,0,0,1,1,1};
 6 int dy[9]={0,-1,0,1,-1,1,-1,0,1};
 7 int N,M;
 8  int ans;
 9 void dfs(int x,int y)//初始位置
10 {
11     a[x][y]='.';
12     for(int i=1;i<=8;i++)
13     {
14         int xx=x+dx[i];
15         int yy=y+dy[i];
16         if(xx<1||x>N||y<1||y>M||a[xx][yy]=='.')continue;//判断是否越界
17         a[xx][yy]='.';  //回溯
18         dfs(xx,yy);
19 
20     }
21 }
22 int main()
23 {
24 
25    cin>>N>>M;
26    for(int i=1;i<=N;i++)
27    {
28        for(int j=1;j<=M;j++)
29        {
30            cin>>a[i][j];
31        }
32    }
33 
34    for(int i=1;i<=N;i++)
35    {
36        for(int j=1;j<=M;j++)
37        {
38            if(a[i][j]=='W')
39            {
40                 ans++;
41             dfs(i,j);
42 
43            }
44        }
45    }
46    cout<<ans;
47    return 0;
48 }

 

上一篇:如何进行SCCM中客户端记录信息维护?


下一篇:每日算法刷题-DFS题目