zoukankan      html  css  js  c++  java
  • 八连通(vector动态数组法)

    题目和一般的八连通一样,但行数和列数未定,相乘对于1e6,直接开a[1e6][1e6]的数组肯定会爆内存。用二维的动态vector就能很好的解决这个问题

    #include<bits/stdc++.h>
    using namespace std;
    int dx[10]={-1,0,1,-1,1,-1,0,1};
    int dy[10]={1,1,1,0,0,-1,-1,-1};
    int n,m;
    
    void dfs(vector< vector < bool > >&a,int x,int y)
    {
        a[x][y]=0;
        int X,Y;
        for(int i=0;i<8;i++)
        {
            X=x+dx[i];
            Y=y+dy[i];
            if(X>=0&&X<n&&Y>=0&&Y<m&&a[X][Y]==1)
            {
                dfs(a,X,Y);
            }
        }
        //return ;
    }
    int main()
    {
    int x,cnt=0;
    cin>>n>>m;
    //vector<vector<int> > a(n, vector<int>(m,0));
    vector< vector<bool> >a(n);
    for(int i=0;i<n;i++)
    {
        a[i].resize(m);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
        cin>>x;
        a[i][j]=x;
    }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
      if(a[i][j]==1)
      {
      dfs(a,i,j);
      cnt++;
    }
    }
    }
    cout<<cnt<<endl;
    }
  • 相关阅读:
    登录权限
    ajax搜索分页
    dos命令
    tp5单删
    MVC简易封装
    linux环境安装swoole
    nginx环境安装laravel404问题
    ABZ职业规划
    Yii安装curl
    SKU的概念和理解
  • 原文地址:https://www.cnblogs.com/hh13579/p/10925375.html
Copyright © 2011-2022 走看看