刷题笔记-平面划分

本文最后更新于:February 21, 2022 pm

积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里,不积小流无以成江海。齐骥一跃,不能十步,驽马十驾,功不在舍。面对悬崖峭壁,一百年也看不出一条裂缝来,但用斧凿,能进一寸进一寸,能进一尺进一尺,不断积累,飞跃必来,突破随之。

目录

知识总结:

  • 直线分割平面公式:1/2(N2+N+2)

  • 封闭曲线平面分割公式:n2-n+2

  • 折线平面分割公式:f(n)=2n2-n+1

  • 平面分割空间公式:f(n)=(n3+5n)/6+1

  • 圆和直线的空间分割公式:m2+1/2 * n2+2 * m * n-m+1/2 * n+1(m表示圆,n表示直线)

圆划分平面

n个圆最多能将一个平面分成: (n-1) * n+2 部分

  • 封闭曲线平面分割公式:n2-n+2

如 20个圆最多能将一个平面分成:19×20+2=382 部分

直线划分平面

n条直线最多把平面分成:1+(1+n) * n / 2。

  • 直线分割平面公式:1/2(N2+N+2)

如20条直线最多将平面分成多少部分:1+1+2+……+20=1+(1+20)* 20 / 2=211

题目

20 个圆和20 条直线最多能把平面分成多少个部分?

方式一(套公式)

1
2
3
4
int m=20,n=20;
int value= (int) (m*m+0.5*n*n+2*m*n-m+0.5*n+1);//m*m+1/2*n*n+2*m*n-m+1/2*n+1

System.out.println(value);

方式二

1
2
3
4
5
6
7
8
9
10
11
12
int m=20,n=20; //m圆,n线
int ans = 2; ////第一个圆平面分成2部分
for(int i=2; i<=m; i++){//再画19个圆
ans += (i-1)*2;
}

ans += m*2;//第一条直线和20个圆相交,有20*2个相交点,平面增加40部分
for(int i=2; i<=n; i++){//再画19条线
ans += 2*m+i;//第i条直线和前面20个圆和i-1条线最多产生40+i-1个焦点,被分成40+i段,亦即增加40+i个部分
}

System.out.println(ans);