3.19 米哈游后端笔试第一题BFS解法

离谱,我的BFS怎么卡在20%,明明O(n)的

#include <iostream>
#include <vector>
#include <algorithm>
#include <deque>
#include <unordered_map>
#include <string>
using namespace std;
int getcount(int n, int m, vector<vector<char>> nums1)
{
    vector<vector<int>> visited(n, vector<int>(m, 0));
    deque<pair<int, int>> q;
    vector<vector<int>> delta = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
    int cnt = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (visited[i][j] != 0)
                continue;
            q.push_back({i, j});
            while (!q.empty())
            {
                int x = q.front().first;
                int y = q.front().second;
                q.pop_front();
                visited[x][y] = 1;
                for (auto &add : delta)
                {
                    int nx = x + add[0];
                    int ny = y + add[1];
                    if (nx >= 0 && nx < n && ny >= 0 && ny < m && nums1[nx][ny] == nums1[x][y] && visited[nx][ny] == 0)
                    {
                        q.push_back({nx, ny});
                    }
                }
            }
            cnt++;
        }
    }
    return cnt;
}
int main()
{
    int n, m;
    cin >> n >> m;
    vector<vector<char>> nums1(n, vector<char>(m));
    vector<vector<char>> nums2(n, vector<char>(m));
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            char c;
            cin >> c;
            nums1[i][j] = c;
            if (c == 'B')
                nums2[i][j] = 'G';
            else
                nums2[i][j] = c;
        }
    }
    int cnt1 = getcount(n, m, nums1);
    int cnt2 = getcount(n, m, nums2);
    cout << cnt1 - cnt2 << endl;
}

#米哈游##笔试##3.19##悬赏#
全部评论
啊啊啊啊兄弟我也是,我也很奇怪
点赞 回复 分享
发布于 2023-03-21 02:09 广东
可能是数组传参需要加引用?
点赞 回复 分享
发布于 2023-03-21 09:07 江苏

相关推荐

11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
评论
1
5
分享
牛客网
牛客企业服务