分割面、空间
直线分割平面
问题描述: 给 n 条直线,问最多能分割出多少个区域?
设 n-1条直线分割出了 f[n-1] 个区域,第 n 条直线想分割最多区域就要和 n-1 条直线相交,从而得到 n-1 个点 ,n-2 条线段 ,每条线段将区域一分为二 ,两端射线也将区域一分为二,即多出来 2 + (n-2 )个区域。
推导:
f
[
n
]
=
f
[
n
−
1
]
+
2
+
(
n
−
2
)
=
f
[
n
−
1
]
+
n
=
f
[
n
−
2
]
+
(
n
−
1
)
+
n
=
f
[
n
−
3
]
+
(
n
−
2
)
+
(
n
−
1
)
+
n
=
f
[
0
]
+
1
+
2
+
…
…
+
(
n
−
1
)
+
n
=
n
∗
(
n
+
1
)
/
2
+
1
\begin{aligned} f[n]&=f[n-1]+2+(n-2)\\ &=f[n-1]+n\\ &=f[n-2]+(n-1)+n\\ &=f[n-3]+(n-2 )+(n-1)+n\\ &=f[0]+1+2+……+(n-1)+n\\ &=n*(n+1)/2+1 \end{aligned}
f[n]=f[n−1]+2+(n−2)=f[n−1]+n=f[n−2]+(n−1)+n=f[n−3]+(n−2)+(n−1)+n=f[0]+1+2+……+(n−1)+n=n∗(n+1)/2+1
折线分割平面
问题描述: 给 n 条折线,问最多能分割出多少个区域?hdu-2050
设 n-1 条折线分割出 f[n-1] 个区域,第 n 条直折线想分割最多区域也要和 n-1 条折线的边相交 ,即 2 *(n-1)条线,那么新增 4 *(n-1)条线段,射线数为 2 ,但是在另一端(v型端)两线段只能增加一个区域。
推导:
f
[
n
]
=
f
[
n
−
1
]
+
4
∗
(
n
−
1
)
+
2
−
1
=
f
[
n
−
1
]
+
4
∗
(
n
−
1
)
+
1
=
f
[
n
−
2
]
+
4
∗
(
n
−
2
)
+
4
∗
(
n
−
1
)
+
2
=
f
[
1
]
+
4
+
4
∗
2
+
…
…
+
4
∗
(
n
−
1
)
+
(
n
−
1
)
=
2
∗
n
2
−
n
+
1
\begin{aligned} f[n]&=f[n-1]+4*(n-1)+2-1\\ &=f[n-1]+4*(n-1)+1\\ &=f[n-2]+4*(n-2)+4*(n-1)+2\\ &=f[1]+4+4*2+……+4*(n-1)+(n-1)\\ &=2*n^2-n+1 \end{aligned}
f[n]=f[n−1]+4∗(n−1)+2−1=f[n−1]+4∗(n−1)+1=f[n−2]+4∗(n−2)+4∗(n−1)+2=f[1]+4+4∗2+……+4∗(n−1)+(n−1)=2∗n2−n+1
平面分割空间
问题描述: 用刀切圆形蛋糕,n 刀最多能把蛋糕切成多少块?hdu-1290
二维的分割与交点有关,那么三维与交线有关吗?当 n-1刀时,有 p[n-1] 块蛋糕,那么第 n 刀一定是和前n-1 刀(假设切完以后蛋糕之间没有分开)平面相交,最多有 n-1 条交线,那么n-1 条交线将第n 个平面分为 f[n-1]个区域(直线分割平面)而这些平面将原有的空间一分为二,则增加了p[n-1]块蛋糕。
推导:
p
[
n
]
=
p
[
n
−
1
]
+
f
[
n
−
1
]
=
p
[
n
−
2
]
+
f
[
n
−
2
]
+
f
[
n
−
1
]
=
p
[
1
]
+
f
[
1
]
+
…
…
+
f
[
n
−
1
]
=
2
+
(
1
∗
2
+
2
∗
3
+
3
∗
4
+
…
…
+
(
n
−
1
)
∗
n
)
/
2
+
(
n
−
1
)
=
n
+
1
+
(
2
∗
2
+
3
∗
3
+
4
∗
4
+
…
…
+
n
∗
n
−
2
−
3
−
4
−
…
…
−
n
)
/
2
=
(
n
3
+
5
∗
n
)
/
6
+
1
\begin{aligned}p[n]&=p[n-1]+f[n-1]\\&=p[n-2]+f[n-2]+f[n-1]\\&=p[1]+f[1]+……+f[n-1]\\&=2+(1*2+2*3+3*4+……+(n-1)*n)/2+(n-1)\\&=n+1+(2*2+3*3+4*4+……+n*n-2-3-4-……-n)/2\\&=(n^3+5*n)/6+1\end{aligned}
p[n]=p[n−1]+f[n−1]=p[n−2]+f[n−2]+f[n−1]=p[1]+f[1]+……+f[n−1]=2+(1∗2+2∗3+3∗4+……+(n−1)∗n)/2+(n−1)=n+1+(2∗2+3∗3+4∗4+……+n∗n−2−3−4−……−n)/2=(n3+5∗n)/6+1
圆形(封闭曲线)分割平面
问题描述: 有 n 个圆形,问最多能分割出多少个区域?
设前 n-1 个圆形有 f[n-1] 分割个区域,第 n 个圆要割出最多个区域,那么要与前 n-1 个圆相交,则多出 2 * (n-1)个线段,增加了2 *(n-1)个区域。
推导:
f
[
n
]
=
f
[
n
−
1
]
+
2
∗
(
n
−
1
)
=
f
[
n
−
2
]
+
2
∗
(
n
−
2
)
+
2
∗
(
n
−
1
)
=
f
[
1
]
+
2
+
2
∗
2
+
…
…
+
2
∗
(
n
−
1
)
=
n
2
−
n
+
2
\begin{aligned}f[n]&=f[n-1]+2*(n-1)\\&=f[n-2]+2*(n-2)+2*(n-1)\\&=f[1]+2+2*2+……+2*(n-1)\\&=n^2-n+2\end{aligned}
f[n]=f[n−1]+2∗(n−1)=f[n−2]+2∗(n−2)+2∗(n−1)=f[1]+2+2∗2+……+2∗(n−1)=n2−n+2
总结
无论是线分割面,还是面分割空间,都是让第 n 个面或线与前面的 n-1 个面或线相交,从而得出线段和射线个数;多出 k 条线段即多出了 k 个区域,因为线段将空间一分为二。射线也像线段一样,分割区域;折线是因为有两个线段相交成V型,只分割出1块区域。
学习博客:https://www.cnblogs.com/chaosheng/archive/2012/01/26/2329583.html