解题思路: 考虑测试n次能支持的最大层数的关系。
首先考虑只有一部手机的时候,因为只有一部手机所以我们只能从第一层开始,一层一层的往上试
因此次数与最大层数的关系为:F1(n)=n;
然后我们考虑有两部手机的时候,因为题目说了是运气最差的时候,所以我们首先从哪里开始扔第一个手机也就没什么区别了,我们扔第一部手机有两种情况
(1)手机碎了,那你现在就只有一步手机了,那就由和只有一部手机时候一样了,不过此时,你已经扔过一次了所以:
F1(n-1)+1
(2)手机,没碎,你现在有两部手机,n-1次测试次数 :
F2(n-1)
总的来看,当你有两部手机的时候
F2(n)=F2(n-1)+1+F1(n-1)
然后就简单了,当我们有三部手机的时候,你随便先扔一部,又是有两种可能,所以:
F3(n)=F3(n-1)+F2(n-1)+1
注意事项:
参考代码:
#include<bits/stdc++.h> using namespace std; int f2[105], f3[105]; int main() { int n; cin >> n; int i = 0; while(f3[i] < n){ i++; f2[i] = f2[i-1] + i;//这里i本身就++了,所以不用加一了 f3[i] = f3[i-1] + f2[i-1] + 1; } cout << i << endl; return 0; }
0.0分
10 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复