手机版

ACM常用算法(21)

发布时间:2021-06-06   来源:未知    
字号:

ACM常考算法

typedef struct { double x,y; } Point;

int linecorss(Point p1,Point p2,Point p3,Point p4,Point *p) {

double k; //同一直线

if ((p4.x-p3.x)*(p1.y-p3.y)-(p4.y-p3.y)*(p1.x-p3.x)==0&&

(p2.x-p1.x)*(p1.y-p3.y)-(p2.y-p1.y)*(p1.x-p3.x)==0) return 2; //平行,不同一直线

if ((p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y)==0) return 0;

k=((p4.x-p3.x)*(p1.y-p3.y)-(p4.y-p3.y)*(p1.x-p3.x))/((p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y));

//k1=((p2.x-p1.x)*(p1.y-p3.y)-(p2.y-p1.y)*(p1.x-p3.x))/((p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y)); (*p).x=p1.x+k*(p2.x-p1.x); (*p).y=p1.y+k*(p2.y-p1.y); return 1;//有交点}

11.判断一个封闭图形是凹集还是凸集

语法:result=convex(Point *p,int n); 参数:

*p: 封闭曲线顶点数组 n: 封闭曲线顶点个数

返回

1:凸集;-1:凹集;0:曲线不符合要求无法计算 值: 注意: 源程序:

默认曲线为简单曲线:无交叉、无圈

typedef struct { double x,y; } Point;

int convex(Point *p,int n) {

int i,j,k; int flag = 0;

ACM常用算法(21).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)