zoukankan      html  css  js  c++  java
  • 杂题 深度优先搜索

    第一道懂的深度优先搜索题,找图中八连块的个数

    #include <iostream>
    #include <cstring>
    using namespace std;
    #define X 100
    int visit[X][X];
    int a[X][X];

    void dfs(int x,int y) //深度优先搜索
    {
    if(visit[x][y]||!a[x][y]) //如果是白色或者是遍历过的
    return;
    visit[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()
    {
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    int n,i,j;
    while(cin>>n)
    {
    memset(a,0,sizeof(a));
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    cin>>a[i][j];
    int count = 0;

    memset(visit,0,sizeof(visit)); //扩充边界,使边界涂成白色
    for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
    if(!visit[i][j]&&a[i][j])
    {
    count++; //计数
    dfs(i,j); //深度优先搜索
    }
    cout<<count<<endl;
    }
    return 0;
    }

  • 相关阅读:
    软件设计文档
    java基础路线与详细知识点
    hdu 2203 亲和串 kmp
    UVALive 6915 J
    UVALive 6911 F
    UVALive 6906 A
    hdu 3746 Cyclic Nacklace KMP
    hdu 1686 Oulipo kmp算法
    hdu1711 Number Sequence kmp应用
    hdu4749 kmp应用
  • 原文地址:https://www.cnblogs.com/yejinru/p/2374724.html
Copyright © 2011-2022 走看看