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

poj 1039 Pipe

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

poj 1039 Pipe

#include<iostream>#include<cmath>#include<iomanip>using namespace std;const double precision=1e-3;   //精度限制const double inf=99999.0;   //正无穷,注意下面使用的是负无穷typedef class Node    //折点坐标{public:double x;double y;}point;int max(int a,int b){return a>b?a:b;}int dblcmp(double p){if(fabs(p)<precision)    // fabs()  浮点数的绝对值return 0;       //只要是在0的邻域,就认为是0return p>0?1:-1;}double det(double x1,double y1,double x2,double y2){return x1*y2-x2*y1;}double cross(point A,point B,point P){return det(B.x-A.x , B.y-A.y , P.x-A.x , P.y-A.y);}bool check(point A,point B,point C,point D){return (dblcmp(cross(A,B,C)) * dblcmp(cross(A,B,D)) <= 0);}double intersection(point A,point B,point C,point D){double area1=cross(A,B,C);double area2=cross(A,B,D);int c=dblcmp(area1);int d=dblcmp(area2);if(c*d<0) //CD在AB的两侧,规范相交return (area2*C.x - area1*D.x)/(area2-area1);  if(c*d==0)   //CD的其中一个端点在AB上,不规范相交if(c==0)return C.x;//C在AB上,返回AB与CD非规范相交时的交点C的横坐标elsereturn D.x;//D在AB上,返回AB与CD非规范相交时的交点D的横坐标return -inf;  //CD在AB同侧,无交点,返回 负无穷}int main(int i,int j,int k){int n;    //折点数while(cin>>n){if(!n)break;point* up=new point[n+1];         //上折点point* down=new point[n+1];       //下折点double max_x=-inf;  //最大可见度(管中最远可见点的横坐标)for(i=1;i<=n;i++){cin>>up[i].x>>up[i].y;down[i].x=up[i].x;down[i].y=up[i].y-1;}bool flag=false;  //标记当前光线L(直线up[i]->down[j])能否贯通全管for(i=1;i<=n;i++) //枚举所有通过一个上折点、一个下折点的直线{for(j=1;j<=n;j++)if(i!=j){for(k=1;k<=n;k++)     //直线L最大延伸到第k-1节管子if(!check(up[i],down[j],up[k],down[k]))   //up[k]->down[k]为折点处垂直x轴的直线break;if(k>n){flag=true;break;}else if(k>max(i,j)){        double temp=intersection(up[i],down[j],up[k],up[k-1]);if(max_x < temp)  //L与第k-1节管子的上管壁相交max_x=temp;temp=intersection(up[i],down[j],down[k],down[k-1]);if(max_x < temp)  //L与第k-1节管子的上管壁相交max_x=temp;}}if(flag)break;}if(flag)cout<<"Through all the pipe."<<endl;elsecout<<fixed<<setprecision(2)<<max_x<<endl;delete up,down;}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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