一道经典数学题及其周边问题
2009-05-01 17:58
316 查看
字号:大 中 小
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1290
切球形蛋糕,N刀最多切多少块的问题。
先来看下其周边的几个简单问题:
1.同一个平面内的N条直线,最多有多少个交点。
2.有一个平面,问N条直线最多可以将这个平面分成几部分。
3.有一个三维空间,问N个平面最多可以将这个空间分成几部分。
问题分析:
先看第一个问题。
先看只有少数几条直线的情况:
两条直线如果平行则没有交点,相交则有一个交点
有三条直线l1,l2,l3的时候,l1//l2//l3,则没有交点;l1//l2,l3不平行与l1或者l2,有两个交点;l1与l2不平行时,有一个交点,l3与他们相交,l3的交点数为 2 = n - 1;
四条直线的时候,是三条直线相交的最多交点数+3。
扩展到n条直线的情况,交点数量为(n-1)条直线的交点数+第n条直线上的交点数。
总结方程:
f(n) = f(n-1)+(n-1) ================>> f(n) = n*(n-1)/2 , n > 0
第二个问题
利用第一个题的规律,加入第n条直线后,第n条直线上的(n-1)个点讲这条线分为n段,多出来n个面(为了避免重复计算,只算加入的直线一侧的面即可)
总结方程:
f(n) = f(n-1)+n , f(0) = 1 , f(1) = 2;=======>> f(n) = n*(n-1)/2+1;
第三个问题
综合前两个问题。假设前(n-1)个面把空间分成了f(n-1)个部分,则加入第n个面后,要达到最多,则必须与前(n-1)个面都相交,则第n个面上会出现(n-1)条交线,把第n个面分成了(n*(n-1)/2+1)个子平面,而每个子平面都可以将空间分为2部分,避免重复计算,只计算一侧的空间数,这样就可以推理得知:
f(n) = f(n-1) + n*(n-1)/2 + 1 =========>>f(n) = (n*n*n+5*n+6)/6;
切蛋糕问题就是第三个问题的不同叙述而已。
相关文章推荐
- 一道SAT数学题及其解法
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)
- 一道数学题——井水抽水问题
- 算法题----经典数学问题
- Leftmost Digit(经典数学问题,对数求解)
- LA 3882 经典约瑟夫环问题的数学递推解法
- 【BFS】一道经典的迷宫模板问题
- 经典数学逻辑问题--海盗分金币
- ACM经典算法之数学问题模板
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)(转载)
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)
- 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目) [c#]
- 【面试高频问题】一道经典C++网络编程问题的备忘录
- 一道SAT数学题及其解析
- 选择爱人的数学方法(经典秘书问题)
- 算法题-经典数学问题
- 一道经典的关于Fibonacci数列的面试题(问题)的新想法 -> N阶楼梯问题
- 一道经典的面试题--12小球称重问题
- 组合数学经典问题---铺砖问题
- 一道经典面试题,字符数组排序问题(字符包含a-z、A-Z、0-9.)