#include<bits/stdc++.h>
using namespace std;
#define ll long long
map<ll,ll> mp;
ll dfs(ll n){
if(mp.count(n))return mp[n];
if(n<2) return 0;
else if(n&1) {
mp[n/2]=dfs(n/2);mp[n/2+1]=dfs(n/2+1);
return n+mp[n/2]+mp[n/2+1];
}
else {
mp[n/2]=dfs(n/2);
return n+mp[n/2]*2;
}
}
int main(){
ll n;
cin>>n;
mp[1]=0;
cout<<dfs(n);
return 0;
}
如上是一个正常的dfs暴力搜索,但是在我的vs code里他的结果 340仍是340,在小熊猫上是2888,小熊猫的运行答案是正确的,问题是为什么vs code根本没有进行dfs搜索,倒置答案为n(n>1)时