圆形划分区域(空间)

一道阿里的笔试题目(大意):一个平面空间内,使用一个圆形将空间划分,例如一个圆形将空间划分为两个区域(包括圆外面的),两个圆形最多可以划分4个区域;三个圆最多可以划分8个,4个圆可最多划分14个;。。。。。

 

一开始,思路:由新增的圆去切割现有的区域,考虑如何才可以切割最多区域。但是,当区域成倍的增加,图形过于复杂,搅乱思路;忽想编程之美的一道题目“光线切割区域”的思路;

考虑其相交的点入手。

首先考虑两个圆最多只能有两个交点

假设现有 n-1个圆,区域数为 f(n-1);

现在填多一个圆进去,那么这个圆最多和所有的(n-1个)圆最多就有2*(n-1)个交点,即是说:

这个圆被2*(n-1)个交点分成了2*(n-1)段弧;关键就在这里,每一段弧就意味在其将某个空间一分为二

这样,新添了这个圆之后将会在之前的基础上添加了2*(n-1)个区域;即f(n) = f(n-1) + 2*(n-1);

考虑边界条件,得:

f(n) = {  2  ;        n=1

    {  f(n-1)+ 2*(n-1);   n=2,3,4...

化简一下(化为一般式):

f(n) = n^2 -n + 2;

 

posted @ 2013-05-03 15:26  legendmaner  阅读(1530)  评论(0编辑  收藏  举报