标签:
2 0 0 1 1 2 1 1 1 1 3 -1.5 0 0 0 0 1.5 0
0.71 0.00 0.75//刚开始写的超时,未排序#include<iostream> #include<stdio.h> #include<math.h> #include<algorithm> #include<string.h> #include<string> using namespace std; typedef struct { double x,y; }node; node a[100000]; bool cmp(node a,node b) { return a.y<b.y; } int main() { int n,i,j; double r,min; while(cin>>n) { if(n==0) break; for(i=0;i<n;i++) cin>>a[i].x>>a[i].y; if(n==2&&a[0].x==a[1].x&&a[0].y==a[1].y) { cout<<"0.00"<<endl; continue; } min=sqrt(((a[0].x-a[1].x)*(a[0].x-a[1].x))+((a[0].y-a[1].y)*(a[0].y-a[1].y))); for(i=0;i<n;i++) { for(j=i+1;j<n;j++) { r=sqrt(((a[i].x-a[j].x)*(a[i].x-a[j].x))+((a[i].y-a[j].y)*(a[i].y-a[j].y))); if(r<min) min=r; } } printf("%.2f\n",min/2.0); } return 0; }
//改正之后的,,后来看了一下别人的,有的说若对x排序则超时,若对y排序则可以我还看见有的人是对x+y进行排序的也过了,,sort比qsort效率高#include<iostream> #include<stdio.h> #include<math.h> #include<algorithm> #include<string.h> #include<string> using namespace std; typedef struct { double x,y; }node; node a[100000]; bool cmp(node a,node b) { return a.y<b.y; } int main() { int n,i; double r,min; while(cin>>n) { if(n==0) break; for(i=0;i<n;i++) cin>>a[i].x>>a[i].y; if(n==2&&a[0].x==a[1].x&&a[0].y==a[1].y) { cout<<"0.00"<<endl; continue; } sort(a,a+n,cmp); min=sqrt(((a[0].x-a[1].x)*(a[0].x-a[1].x))+((a[0].y-a[1].y)*(a[0].y-a[1].y))); for(i=2;i<n;i++) { r=sqrt(((a[i-1].x-a[i].x)*(a[i-1].x-a[i].x))+((a[i-1].y-a[i].y)*(a[i-1].y-a[i].y))); if(r<min) min=r; } printf("%.2f\n",min/2.0); } return 0; }
标签:
原文地址:http://blog.csdn.net/phytn/article/details/45243779