在坐标系中求多边型的面积:
思路:
取一个多边形其中一个顶点(x0,y0),从他开始向其他的顶点连线,分成(n-2)个三角形,设每个三角形的另两个顶点为(x1,y1),(x2,y2),则这个三角形面积为 (|(x1-x0)*(y2-y0)|+|(x2-x0)*(y1-y0)|)/2,多边形的面积就是所有三角形的面积和 三角形的面积公式的由来 用向量来表示三角形的面积是1/2*a*b*sinc a,b是向量,sinc是三角形中,a,b两个向量的夹角, 注意:向量是有方向的,方向在该题中也就是从自己选的一个顶点,到其他定点公式1:
两向量a×b的模=|a||b|sin(a,b)所以有公式1推出三角形的面积是1/2*|a|*|b| |a|=(|(x1-x0)*(y1-y0)| 所以三角形面积为(|(x1-x0)*(y2-y0)|+|(x2-x0)*(y1-y0)|)/2
n条直线分平面(求能将平面分成多少个区域)
题目:
在同一个平面上画一个圆及n条直线,每条直线均与其他直线在圆内相交。若没有三条以上直线共点的情况,则这些直线将圆的内部分成几块区域?
思路:
没有三条以上直线共点 1条直线将圆分成2部分 2条直线将圆分成4=2+2部分 3条直线将圆分成7=2+2+3部分 4条直线将圆分成11=2+2+3+4部分 F(n)=F(n-1)+n ..... n条直线将圆分成2+2+3+4+...+n(n>1)=1+n(n+1)/2部分 化简F(n)=1+n(n+1)/2 等比数列求和 n条折线分平面(求能将平面分成多少个区域) 寻找n条折线与2n条直线的关系: 将一条折线将一个平面分成了2部分,两条直线将一个平面分成了4部分,也就是将折线的一个顶点将两条射线延伸,就将本来的一个平面分成了三个平面,以这种方法类推, 可以想到,两条直线比一条折现将平面分成的区域多2个部分,那么2*n条直线就比n条折线多出2*n个部分,所以n条折线将平面分成的部分是:F(n)=1+2*n(2*n+1)/2 -2*nn条Z型线分平面(求能将平面分成多少个区域)寻找n条Z型线与3n条直线的关系: 一个将Z型线的三条直线延伸的一个图形,将平面分成6部分,以为有两条直线是平行的,如果两条直线不平行,那么就会多出一个区域,也就是说这种图型比3条直线相交少了1 个部分,一个将Z型线的三条直线延伸的一个图形将平面分成的区域比一个Z型线将平面分成的区域多了4个部分,本来一个Z型线将平面分成了2个部分,但是如果在两个Z型线的 顶点将两条射线延伸的话,就回将原来的2个平面分成了6个平面,也就是说将原来的一个区域,分成了3个区域,所以一条Z型线就比三条直线少了5个部分,那么n条Z型线就比 3*n条直线少了5*n个部分,所以n条Z型线将平面分成的部分是:下面是另一种推到方法:(参考,推荐使用上面的方法)F(n)=1+3*n(3*n+1)/2 -5*n
依照上面的方法可以得出,n对平行线将平面分成的区域时:F(n)=1+2*n(2*n+1)/2 -n
分类: C |
直线: | ||
条数 | 最多交点数 | 平面数 |
1 | 0 | 2 |
2 | 1 | f(1)+2 |
3 | 2 | f(2)+3 |
4 | 3 | f(3)+4 |
n | n-1(该条数的直线前面的直线总条数) | f(n-1)+增加的平面数=f(n-1)++(交点数+1)=f(n-1)+((n-1)+1) |
平行线: | |||
对数 | 条数 | 最多交点数 | 平面数 |
1 | 2 | 0 | 3 |
2 | 4 | 4=2*2 | f(1)+6=f(1)+3*2 |
3 | 6 | 8=4*2 | f(2)+10=f(2)+5*2 |
4 | 8 | 12=6*2 | f(3)+14=f(3)+7*2 |
n | 2*n | 单条直线交点数*2=该对平行线前的直线总条数*2=(2*(n-1))*2 | f(n-1)+单条直线增加的平面数*2=f(n-1)+(交点数+1)*2=f(n-1)+(2*(n-1)+1)*2 |
折线: | |||
折线数 | 所含直线数 | 最多交点数 | 平面数 |
1 | 2 | 0 | 2 |
2 | 4 | 4=2*2 | f(1)+5=f(1)+(2*3-1) |
3 | 6 | 8=4*2 | f(2)+9=f(2)+(2*5-1) |
4 | 8 | 12=6*2 | f(3)+13=f(3)+(2*7-1) |
n | 2*n | 单条直线交点数*2=该对平行线前的直线总条数*2=(2*(n-1))*2 | f(n-1)+(单条直线增加的平面数*2-1)=f(n-1)+((交点数+1)*2-1)=f(n-1)+((2*(n-1)+1)*2-1) |
三角形 | |||
个数 | 交点数 | 增加的平面个数 | 分割平面总数 |
1 | 0 | 1 | 2 |
2 | 2*3 | 3*3-3 | f(1)+3*3-3 |
3 | 4*3 | 5*3-3 | f(2)+5*3-3 |
4 | 6*3 | 7*3-3 | f(3)+7*3-3 |
n | (n*2-2)*3 | (2*n-1)*3-3 | f(n-1)+(2*n-1)*3-3=f(n-1)+6*(n-1) |
代码:
//2012.2.3
//寒假练习
//算法:递推
//f(n)=f(n-1)+((2*(n-1)+1)*2-1)
//解析整理于http://blog.sina.com.cn/s/blog_83ccc39d0100z3l9.html
#include<iostream>
using namespacestd;
int main()
{
}