牛客周赛 Round 49B-嘤嘤不想打怪兽喵_ 题型:数据结构 难度:中等

44 阅读1分钟

B-嘤嘤不想打怪兽喵_牛客周赛 Round 49 (nowcoder.com)

image.png

我们可以用二叉树递归去做.这个我们就可以看做每一层,最后我们输出二叉树的层数就可以了

#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int> mp;

int solve(int x)
{
	if(x==0)return 0;  //如果最后只有0了,就结束了
	 
	if(mp.count(x)) return mp[x];
	int res=solve(x/2)+solve(x/2)+1;  //ans保存层数
	mp[x]=res;  //哈希统计存储一下当前数出现的次数
	return res;
}
int main()
{
	int n;cin>>n;
	
	cout<<solve(n)<<endl;
	return 0;
}

image.png