我用了个记忆化搜索 MLE !!!
大佬们帮我压空间!!!
#include "bits/stdc++.h"
using namespace std;
#define int long long
unordered_map<int,int> s;//加空间
int n;
int dg(int x){
if(s[x]) return s[x];
else{
if(x%2==0) return s[x]=dg(x>>1),s[x];
else return s[x]=min(dg((x+1)>>1),dg((x-1)>>1))+1,s[x];
}//>>1相当于/2
}
int main(void){
int T;
s[1]=s[2]=1;//初始化
scanf("%lld",&T);
while(T--){
scanf("%lld",&n);
s[n]=dg(n);
printf("%lld\n",s[n]);
}
}