栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 1066 Treasure Hunt

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 1066 Treasure Hunt

#include <iostream> #include <stdio.h>#include <math.h>using namespace std;#define EPS 1e-8#define MAXN 35#define INF 0xfffffffstruct Point {    double x, y;} p[MAXN<<1];double cross_pro(Point p0, Point p1, Point p2){    return (p1.x-p0.x)*(p2.y-p0.y) - (p2.x-p0.x)*(p1.y-p0.y);}int dblcmp(double d) // 三出口判断正负浮点数函数{    if (fabs(d) < EPS)        return 0; // 三点共线    return (d > 0) ? 1 : -1;}bool is_intersect(Point p1, Point p2, Point p3, Point p4) // 判断严格相交{    return dblcmp(cross_pro(p3, p4, p1)) * dblcmp(cross_pro(p3, p4, p2)) == -1; // 判断起点终点是否在wall的两侧}int compute(Point dest, int cnt){    int i, j, res, min=INF;    for (i = 0; i < cnt; ++i)    {        res = 0;        for (j = 0; j < cnt; j += 2) if (is_intersect(dest, p[i], p[j], p[j+1]))     ++res;        if (min > res) min = res;    }    return min;}int main(){    int i, n, cnt=0;    double x1, y1, x2, y2;    Point dest;    scanf("%d", &n);    for (i = 0; i < n; ++i)    {        scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);        p[cnt].x = x1;        p[cnt++].y = y1;        p[cnt].x = x2;        p[cnt++].y = y2;    }    scanf("%lf%lf", &dest.x, &dest.y);     if (n == 0)        printf("Number of doors = 1n");    else        printf("Number of doors = %dn", compute(dest, cnt)+1);    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372965.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号