手机版

ACM常用算法(17)

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

ACM常考算法

源程序:

需要 math.h

#define MIN(x,y) (x < y ? x : y)#define MAX(x,y) (x > y ? x : y) typedef struct { double x,y; } Point;

int insidepolygon(Point *polygon,int N,Point p) {

int counter = 0; int i;

double xinters; Point p1,p2;

p1 = polygon[0];

for (i=1;i<=N;i++) { p2 = polygon[i % N];

if (p.y > MIN(p1.y,p2.y)) {

if (p.y <= MAX(p1.y,p2.y)) {

if (p.x <= MAX(p1.x,p2.x)) { if (p1.y != p2.y) { xinters =

(p.y-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x;

if (p1.x == p2.x || p.x <= xinters) counter++; } } } }

p1 = p2; }

if (counter % 2 == 0) return(OUTSIDE); else

return(INSIDE); }

6.判断点是否在线段上

语法:result=Pointonline(Point p1,Point p2,Point p); 参数:

p1、p2: 线段的两个端点 p: 被判断点

返回

0:点在不在线段上;1:点在线段上 值: 注意: 源程

若p线段端点上返回1 需要 math.h

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