递推寻解
递推求解
去参加UC的笔试出现了一道题目,没有做出来,郁闷就跟朋友聊聊,没想到最后还是跑回到算法那里去~~~+_+
问题:10个平面最多可以将空间分割几部分
解法一:递推思想 设用n个平面去切割空间的时候是f(n)块。 首先,理解一下,当变为二维的时候,也就是一个平面被N条边最多可以分为几部分:p(n)=1/2[n*(n+1)]+1,这个比较好理解,原理:第N条边可以将p(n)中的n-1条直线相交,从而增加了n部分,于是可推到而出。 现在,当变为三维时,n-1个平面后,放上第n个平面,那么第n个平面上最多有n-1条线,这n-1条线能把第n个平面分为多少部分,那么空间就多了多少部分。 于是,可得推导式: f(n)=f(n-1)+1/2[n*(n+1)]+1,于是可得f(n)=(n^3+5n+6)/2
解法二:数学方程求解 由上面所知,一个平面被N条边最多可以分为几部分:p(n)=1/2[n*(n+1)]+1,可以推测出二维的分割n的最高次幂为2,当为一维的时候,也就是点分割线的时候,n的最高次幂为1,由此可以推测,当为三维的时候,n的次幂是3; 于是可以设n个平面可以将空间分割为f(n)部分,f(n)=a*n^3+b*n^2+c*n+d, 而且知f(0)=1; f(1)=2; f(2)=4; f(3)=8代入, 可求得:f(n)=(n^3+5n+6)/2