测试用例存在BUG

机器人的运动范围

http://www.nowcoder.com/questionTerminal/6e5207314b5241fb83f2329e89fdecc8

使用方法1可以通过测试用例,方法2也可以通过测试用例,但是对于movingCount(8,6,20),两种方法得到的答案不一样,使用方法2(BFS)得到的结果是正确的39,方法1(遍历)得到的结果是72.测试用例不严谨

方法1. 使用暴力遍历,并且在行数只有一行或者列数只有一行是返回可以到达的格子数。这个解法可以通过所有测试用例,但是本方法对于我自己测试的用例得到错误的结果。可见上面加黑体部分

class Solution {
public:
    int convert2sum(int num)
    {
        int ans=0;
        while(num>0)
        {
            ans+=num%10;
            num=num/10;
        }
        return ans;
    }
    int movingCount(int threshold, int rows, int cols)
    {
        int count=0;
        for(int i=0;i<rows;i++)
        {
            for(int j=0;j<cols;j++)
            {
                if(convert2sum(i)+convert2sum(j)<=threshold)
                {
                    count++;
                }
                else if(cols==1||rows==1)
                {
                    return count;
                }
            }
        }
       return count;
    }

};

方法2. 使用BFS

class Solution {
    public:
        int convert2sum(int num)
        {
            int ans = 0;
            while (num>0)
            {
                ans += num % 10;
                num = num / 10;
            }
            return ans;
        }
        int movingCount(int threshold, int rows, int cols)
        {
            if (threshold<0)
            {
                return 0;
            }
            int count = 0;
            queue<pair<int, int>>q;
            vector<vector<bool>>visited(rows, vector<bool>(cols, false));
            visited[0][0] = true;
            q.push({ 0,0 });
            while (!q.empty())
            {
                pair<int, int>p = q.front();
                q.pop();
                int i = p.first;
                int j = p.second;
                count++;
                if (i - 1 >= 0 && visited[i - 1][j] == false && convert2sum(i - 1) + convert2sum(j) <= threshold)
                {
                    visited[i - 1][j] = true;
                    q.push({ i - 1,j });
                }
                if (i + 1<rows&&visited[i + 1][j] == false && convert2sum(i + 1) + convert2sum(j) <= threshold)
                {
                    visited[i + 1][j] = true;
                    q.push({ i + 1,j });
                }
                if (j - 1 >= 0 && visited[i][j - 1] == false && convert2sum(i) + convert2sum(j - 1) <= threshold)
                {
                    visited[i][j - 1] = true;
                    q.push({ i,j - 1 });
                }
                if (j + 1<cols&&visited[i][j + 1] == false && convert2sum(i) + convert2sum(j + 1) <= threshold)
                {
                    visited[i][j + 1] = true;
                    q.push({ i,j + 1 });
                }
            }
            return count;

        }

    };
全部评论

相关推荐

04-17 18:32
门头沟学院 Java
野猪不是猪🐗:他跟你一个学校,你要是进来之后待遇比他好,他受得了?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务