您的位置:首页 > 其它

一道经典数学题及其周边问题

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;

切蛋糕问题就是第三个问题的不同叙述而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: