解题思路:    考虑测试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.0分

10 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

云天明 3年前 回复TA
6666
咖啡 4年前 回复TA
搬运工~