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

zoj 1721 The Doors

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

zoj 1721 The Doors

#include<stdio.h>#include<math.h>#define INF 1023123123#define MAXN 100typedef struct point{double X,Y;}point;typedef struct edge{int u,v;}edge;int n;double xx[20];point pp[MAXN];int ppnum;double yy[20][4];double Edge[MAXN][MAXN];edge ee[MAXN*MAXN];int eenum;double dis(point a,point b){return sqrt((a.X-b.X)*(a.X-b.X)+(a.Y-b.Y)*(a.Y-b.Y));}double cross(double x1,double y1,double x2,double y2,double x3,double y3){return (x2-x1)*(y3-y1)-(x3-x1)*(y2-y1);}bool Isok(point a,point b){if(a.X>=b.X) return false;bool flag=true;int i=0;while(xx[i]<=a.X&&i<n)i++;int r=0,rr=0,rrr=0;while(xx[i]<b.X&&i<n){if(cross(a.X,a.Y,b.X,b.Y,xx[i],0)*cross(a.X,a.Y,b.X,b.Y,xx[i],yy[i][0])<0)r=1;if(cross(a.X,a.Y,b.X,b.Y,xx[i],yy[i][1])*cross(a.X,a.Y,b.X,b.Y,xx[i],yy[i][2])<0)rr=1;if(cross(a.X,a.Y,b.X,b.Y,xx[i],yy[i][3])*cross(a.X,a.Y,b.X,b.Y,xx[i],10)<0)rrr=1;if(r==1||rr==1||rrr==1){flag=false;break;}i++;}return flag;}double bellman(int beg,int end){double d[MAXN];int i,j;for(i=0;i<MAXN;i++){d[i]=INF;}d[beg]=0;bool ex=true;for(i=0;i<ppnum&&exi++){ex=false;for(j=0;j<eenum;j++)if(d[ee[j].u]<INF&&d[ee[j].v]>d[ee[j].u]+Edge[ee[j].u][ee[j].v]){d[ee[j].v]=d[ee[j].u]+Edge[ee[j].u][ee[j].v];ex=true;}}return d[end];}int main(){int i,j;while(scanf("%d",&n)){if(n==-1) break;pp[0].X=0;pp[0].Y=5;ppnum=1;for(i=0;i<n;i++){scanf("%lf",&xx[i]);for(j=0;j<4;j++){pp[ppnum].X=xx[i];scanf("%lf",&pp[ppnum].Y);yy[i][j]=pp[ppnum].Y;ppnum++;}}pp[ppnum].X=10;pp[ppnum].Y=5;ppnum++;for(i=0;i<ppnum;i++){for(j=0;j<ppnum;j++){Edge[i][j]=INF;}}eenum=0;for(i=0;i<ppnum;i++){for(j=i+1;j<ppnum;j++){if(Isok(pp[i],pp[j])){Edge[i][j]=dis(pp[i],pp[j]);ee[eenum].u=i;ee[eenum].v=j;eenum++;}}}printf("%.2lfn",bellman(0,ppnum-1));}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378487.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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