-1

我试图编写 BFS 代码,但我对这个错误一无所知。为什么我不能简单地使用visited[i][j]==1 ?

int numIslands(vector<vector<char>>& grid) 
{
    int n = grid.size();
    int m = grid[0].size();
    vector<vector<int>> vis
    for (int i = 0; i < n; i++)
    {
        vector<int>v;
        for (int j = 0; j < m; j++)
        {
            v.push_back(0);
        }
        vis.push_back(v);
    }
    int count = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if ((vis[i][j] == 0) && (grid[i][j] == '1'))
            {
                bfs(grid, vis, i, j);
                count++;
            }
        }
    }
    return count;
}

};

字符 22:错误:'operator==' 不匹配(操作数类型为 '__gnu_cxx::__alloc_traits >, std::vector >::value_type' {aka 'std::vector'} 和 'int') if(( vis[i][j]==0)&&(grid[i][j]=='1'))

4

1 回答 1

0

就像@user4581301 在评论中所说的那样,您的主要问题与语法有关。

Linevector<vector<int>> vis需要一个尾随分号:vector<vector<int>> vis;并且您的最后一行 ,};不应该存在,至少没有周围class定义或类似定义的上下文。

这编译:*

int numIslands(vector<vector<char>>& grid) {
    int n = grid.size();
    int m = grid[0].size();
    vector<vector<int>> vis;
    for(int i = 0; i < n; i++) {
        vector<int> v;
        for(int j = 0; j < m; j++) {
            v.push_back(0);
        }
        vis.push_back(v);
    }
    int count = 0;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            if((vis[i][j] == 0) && (grid[i][j] == '1')) {
                bfs(grid, vis, i, j);
                count++;
            }
        }
    }
    return count;
}

我们不知道您对该bfs(std::vector<std::vector<char>>&, std::vector<std::vector<int>>, int, int)函数的定义。您还缺少using namespace std使此语法可行所需的内容。没有它们,此代码段将无法编译。

于 2019-07-30T04:17:59.807 回答