#include<iostream>
using namespace std;
bool f[1000001];
int n,ans=1e6+1;
void dfs(int x,int cnt)
{
f[x]=1;
if(cnt>n) return;
if(x==n)
{
ans=min(ans,cnt);
return;
}
if(x<n && !f[x+1]) dfs(x+1,cnt+1);
if(x-1>1 && !f[x-1]) dfs(x-1,cnt+1);
if(!f[2*x]) dfs(2*x,cnt+1);
}
main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
dfs(1,1);
cout<<ans;
}
想不到怎么做了,每次都输出n或者超时