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 |
大牛们,指点一下这个怎么就错了????#include <iostream> #include <cmath> #include <algorithm> using namespace std; void quick_sort(double *x, int low, int high) { int i, j; double t; if (low < high) /*要排序的元素起止下标,保证小的放在左边,大的放在右边。这里以下标为low的元素为基准点*/ { i = low; j = high; t = *(x+low); /*暂存基准点的数*/ while (i<j) /*循环扫描*/ { while (i<j && *(x+j)>t) /*在右边的只要比基准点大仍放在右边*/ { j--; /*前移一个位置*/ } if (i<j) { *(x+i) = *(x+j); /*上面的循环退出:即出现比基准点小的数,替换基准点的数*/ i++; /*后移一个位置,并以此为基准点*/ } while (i<j && *(x+i)<=t) /*在左边的只要小于等于基准点仍放在左边*/ { i++; /*后移一个位置*/ } if (i<j) { *(x+j) = *(x+i); /*上面的循环退出:即出现比基准点大的数,放到右边*/ j--; /*前移一个位置*/ } } *(x+i) = t; /*一遍扫描完后,放到适当位置*/ quick_sort(x,low,i-1); /*对基准点左边的数再执行快速排序*/ quick_sort(x,i+1,high); /*对基准点右边的数再执行快速排序*/ } } int main() { int C; cin>>C; while(C--) { int N,H,R,T,i,j,k; cin>>N>>H>>R>>T; double distance[101];//最后的距离 double starttime[101];//开始时间 double time[101];//周期 double height[101]; for(i=1;i<=100;i++) { height[i]=H+2*R/100*(i-1); time[i]=2*sqrt(2.0*(H+2*R/100*(i-1))/10); starttime[i]=i-1; distance[i]=height[i]; } int cishu; if(T>N) { cishu=100; } else { cishu=T; } for(i=1;i<=cishu;i++) { double temp=(T-starttime[i])-(int)((T-starttime[i])/time[i])*time[i]-time[i]/2; if(temp>0) { distance[i]=5*temp*temp; } else { distance[i]=height[i]-5*temp*temp; } } quick_sort(distance, 1, 100); for(i=1;i<=N;i++) { printf("%.2f",distance[i]*100); cout<<" "; } cout<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator