题目:A有1数m,B来猜.B每猜一次,A就说"太大","太小"或"对了" 。 <br>问B猜n次可以猜到的最大数。 <br>
思路:用到二叉树!
假设 n 为 3. 那么是这样的。
第一次猜 4 结果有两种 , 太大 ,太小
如果太大的话 下一次可以猜 2
如果太小的话 下一次可以猜 6
第二次猜 2 的话结果有两种 太大 (第三次 1 ) 或者 太小 ( 第三次 3 )
第二次猜 6 的话结果有两种 太大 (第三次 5 ) 或者 太小 ( 第三次 7 )
这样的话就形成了一个树结构。
4
/ \
2 6
/ \ / \
1 3 5 7
这样就把所有的数字遍历一次啦。
# include <iostream>
# include <cmath>
# include <fstream>
using namespace std;
int main()
{
//ifstream cin("aaa.txt");
int t;
cin >> t;
while(t--)
{
int n;
cin >> n;
n = pow(2, n) - 1;
cout << n << endl;
}
return 0;
}
感悟: 题很简单 但超出我的语文理解范围 后来 参考别人才理解的 ( :|)才理解
训练2 8题
最新推荐文章于 2023-12-27 18:07:30 发布