POJ 3278 Catch That Cow 最简单写法

根据题目三个方向进行BFS搜索即可

void solve()
{

    int n, k;
    cin >> n >> k;
    vector<int> v(100001, 0x3f3f3f3f);
    queue<int> q;
    q.push(n);
    v[n] = 0;
    while (!q.empty())
    {
        int np = q.front();
        q.pop();
	   //往前走
        int npp = np + 1;
        if (npp < v.size())
        {
            if (v[npp] > v[np] + 1)
            {
                v[npp] = v[np] + 1;
                q.push(npp);
            }
        }
	   //往后走
        int npm = np - 1;
        if (npm >= 0)
        {
            if (v[npm] > v[np] + 1)
            {
                v[npm] = v[np] + 1;
                q.push(npm);
            }
        }
	   //双倍距离
        int npd = np * 2;
        if (npd < v.size())
        {
            if (v[npd] > v[np] * 2)
            {
                v[npd] = v[np] + 1;
                q.push(npd);
            }
        }
    }
    cout << v[k] << endl;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务