N0 1788 Building a New Depot

和NO 1763的思路挺相似的


688K 0MS
#include<iostream> #include<stdio.h> #include<string> using namespace std; class pair_n{ public: pair_n(){X=0,Y=0;} pair_n(int x,int y):X(x),Y(y){} int X,Y; }; void swap(pair_n *c[],int a,int b){ int t1=c[a]->X,t2=c[a]->Y; c[a]->X=c[b]->X,c[a]->Y=c[b]->Y; c[b]->X=t1,c[b]->Y=t2; } void bubble_sort_XY(pair_n *c[],int n){ int i,j; for(i=1;i<n;i++) for(j=i; j>0&&((c[j]->X<c[j-1]->X)||((c[j]->X==c[j-1]->X)&&(c[j]->Y<c[j-1]->Y)));j--) swap(c,j,j-1); } void bubble_sort_YX(pair_n *c[],int n){ int i,j; for(i=1;i<n;i++) for(j=i; j>0&&((c[j]->Y<c[j-1]->Y)||((c[j]->Y==c[j-1]->Y)&&(c[j]->X<c[j-1]->X)));j--) swap(c,j,j-1); } int main(){ int N,i,length=0; pair_n *cordinate[100001]; string s; scanf("%d",&N); while(N!=0){ for(i=0;i<N;i++) cordinate[i]=new pair_n(), scanf("%d%d",&cordinate[i]->X,&cordinate[i]->Y); bubble_sort_XY(cordinate,N); //对坐标进行先X后Y的排序 for(i=0;i<N;i+=2) length+=cordinate[i+1]->Y-cordinate[i]->Y; //被相连的两点必然是排好的数列中相邻的一组中的两点 bubble_sort_YX(cordinate,N); //对坐标进行先Y后X的排序 for(i=0;i<N;i+=2) length+=cordinate[i+1]->X-cordinate[i]->X; printf("%s%d%s\n","The length of the fence will be ",length," units."); length=0; getline(cin,s,'\n'); scanf("%d",&N); } return 0; }

你可能感兴趣的:(Build)