我正在尝试解决 Leetcode 上的岛屿数量问题,但发生了运行时错误,有人可以帮助解决此代码吗?

时间:2021-07-14 14:38:33

标签: c++ runtime-error

通过使用 dfs 算法,我试图访问每个岛屿以及调用 dfs 函数的次数 没有。在岛上,我使用了访问过的向量来标记我已经访问过的地方。网格包含 0 和 1。 0表示水,1表示陆地。岛被水包围,由水平或垂直连接相邻的陆地而形成。您可以假设网格的所有四个边都被水包围。

void dfs( vector<vector<int>> &vis,vector<vector<char>>& grid,int di[],int dj[],int i,int j,int n,int m)
   {
       if(vis[i][j]==1||grid[i][j]=='0')
       return;
       //   int ind=0;
       for(int ind=0;ind<4;ind++)
       {
           vis[i][j]=1;
           int ni=i+di[ind];
           int nj=j+di[ind];
           if(ni>=0&&nj>=0 && ni<n && nj<m && !vis[ni][nj]&&grid[ni][nj]=='1')
           dfs(vis,grid,di,dj,ni,nj,n,m);
           vis[ni][nj]=1;
       } 
       
   }
    
    
    int numIslands(vector<vector<char>>& grid) {
       
        int n=grid.size();
        
        int c=0;
        int m=grid[0].size();
        
        vector<vector<int>> vis(n,vector<int>(m,0));
        
        int di[4]={-1,0,0,+1,};
        int dj[4]={0,+1,-1,0};
        
        for(int i=0;i<n;i++)
        {
             for(int j=0;j<m;j++)
             {        
                 if(grid[i][j]=='1' && !vis[i][j])
                 {   
                    
                     dfs(vis,grid,di,dj,i,j,n,m);
                     c++;
                     
                 }
             }
        }
        return c;

0 个答案:

没有答案