stonya


私信TA

用户名:stonya

访问量:11885

签 名:

来颗呆桃

等  级
排  名 1097
经  验 3088
参赛次数 1
文章发表 38
年  龄 18
在职情况 学生
学  校
专  业 计算机科学与技术

  自我简介:


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

14 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

6666
2021-03-13 18:29:35
搬运工~
2020-12-22 09:55:00
  • «
  • 1
  • »