Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
提交很多次总是wa,求指点#include<iostream> using namespace std; #define zero 0.00000001 int n; double xm,ym; struct point{ int x1; int y1; int x2; int y2; }wall[40]; int side1[40]; int side2; struct out{ int x; int y; }outer[40]; int main() { int x1,y1,n; int a,b,c; outer[0].x=0; outer[0].y=0; outer[1].x=0; outer[1].y=100; outer[2].x=100; outer[2].y=0; outer[3].x=100; outer[3].y=100; int sp=3; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d%d%d",&wall[i].x1,&wall[i].y1,&wall[i].x2,&wall[i].y2); outer[++sp].x=wall[i].x1; outer[sp].y=wall[i].y1; outer[++sp].x=wall[i].x2; outer[sp].y=wall[i].y2; } scanf("%lf%lf",&xm,&ym); double s; for(int i=0;i<n;i++) { a=wall[i].y2-wall[i].y1; b=wall[i].x1-wall[i].x2; c=wall[i].x2*wall[i].y1-wall[i].x1*wall[i].y2; s=a*xm+b*ym+c; if(s>zero) side1[i]=1; else if(s<zero)side1[i]=-1; else side1[i]=0; } int num; int minn=9999; for(int i=0;i<sp;i++) for(int j=i+1;j<sp;j++) { x1=outer[i].x+outer[j].x; y1=outer[i].y+outer[j].y; if((x1==0)||(x1==200)||(y1==0)||(y1==200)) { num=0; for(int k=0;k<n;k++) { a=wall[k].y2-wall[k].y1; b=wall[k].x1-wall[k].x2; c=wall[k].x2*wall[k].y1-wall[k].x1*wall[k].y2; if(a*x1+b*y1+2*c>zero)side2=1; else if(a*x1+b*y1+2*c<zero)side2=-1; else { num=9999;break; } if(side1[k]!=side2)num++; } if(num<minn)minn=num; } } printf("Number of doors = %d\n",++minn); // system("pause"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator