解题思路: 考虑测试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 人评分
WU-输出正反三角形 (C++代码)浏览:1100 |
【计算直线的交点数】 (C语言代码)浏览:1501 |
循环入门练习5 (C语言代码)浏览:908 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:726 |
一元一次方程 (C语言代码)浏览:4247 |
陶陶摘苹果2 (C语言代码)浏览:651 |
C二级辅导-温度转换 (C语言代码)浏览:575 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:727 |
1074(纳闷了,答案错误,求指教)浏览:384 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:1390 |