求助
查看原帖
求助
81165
Yunn楼主2022/3/22 19:13

大佬能帮忙看看吗 为啥样例都过了,WA了 我感觉没啥问题啊。。

#include <bits/stdc++.h>
using namespace std;
int a, b, ans;
queue<int> q;
int step[3] = {1, 5, 10};
int dp[55];
void bfs()
{
    if (a == b)
    {
        cout << 0 << endl;
        return;
    }
    for (int i = 0; i < 55; i++)
    {
        dp[i] = 2147483647;
    }
    dp[a] = 0;
    q.push(a);
    while (!q.empty())
    {
        int now = q.front();
        q.pop();
        if (now > 40)
            continue;
        if (now < b)
        {
            for (int i = 0; i < 3; i++)
            {
                int tmp = now + step[i];
                if (dp[tmp] > dp[now] + 1)
                {
                    q.push(tmp);
                    dp[tmp] = dp[now] + 1;
                }
            }
        }
        else
        {
            for (int i = 0; i < 3; i++)
            {
                int tmp = now - step[i];
                if (dp[tmp] > dp[now] + 1)
                {
                    q.push(tmp);
                    dp[tmp] = dp[now] + 1;
                }
            }
        }
    }

    cout << dp[b] << endl;
}

int main()
{

    cin >> a >> b;
    bfs();

    return 0;
}
2022/3/22 19:13
加载中...