计蒜客-秋名山数字之神

问题遇到的现象和发生背景

img

img

用代码块功能插入代码,请勿粘贴截图
#include
using namespace std;
int mins = 10000;
void dfs(int step,int b,int foot)
{
    if (step > b) return;
    if (step == b)
    {
        mins = mins > foot ? foot : mins;
        return;
    }

    int i = 1;
    foot++;
    if (i == 1) dfs(2 * step, b, foot);
    i++;
    if (i == 2) dfs(step + 1, b, foot);

}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int a, b;
    cin >> a >> b;
    dfs(a,b,0);
    cout << mins << endl;
    return 0;
}

运行结果及报错内容

自行进行了几组测试都没有问题
提交给平台提示:运行超时

我的解答思路和尝试过的方法

刚学习了dfs所以想试着用这个方法来解决这个问题。

我想要达到的结果

我看网上说这样的题目确实是用dfs之类的方法来解决的吧。
还是说有其他简易的办法.虚心求索!

用贪心算法试试,b如果是偶数就除以2,是奇数就-1,一直到b==a