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 |
Re:为啥Language选C就AC,选GCC就WA呢?In Reply To:为啥Language选C就AC,选GCC就WA呢? Posted by:QianZiHan at 2012-07-14 23:42:05 > #include <stdio.h> > #include <math.h> > > #define INF 0xffffffff > #define MAX_N 205 > > typedef struct { int x, y; } postype; > > int cmp(const void *prev, const void *next) > { > return ((postype *)prev)->x > ((postype *)next)->x ? 1 : -1; > } > > double euclid_dist(postype a, postype b) > { > return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)); > } > > int main() > { > int n; > postype p[MAX_N]; > int i, j; > double f[MAX_N][MAX_N]; > > > //freopen("input.txt", "r", stdin); > //freopen("output.txt", "w", stdout); > > while (scanf("%d", &n) > 0) > { > for (i = 1; i <= n; i++) > scanf("%d%d", &p[i].x, &p[i].y); > qsort(p + 1, n, sizeof(postype), cmp); > > f[1][2] = euclid_dist(p[1], p[2]); > for(j = 3; j <= n; j++) > { > for (i = 1; i < j - 1; i++) > f[i][j] = f[i][j - 1] + euclid_dist(p[j - 1], p[j]); > > f[j - 1][j] = INF; > for (i = 1; i < j - 1; i++) > { > double temp = f[i][j - 1] + euclid_dist(p[i], p[j]); > if (temp < f[j - 1][j]) > f[j - 1][j] = temp; > } > } > > printf("%.2lf\n", f[n - 1][n] + euclid_dist(p[n - 1], p[n])); > } > > //fclose(stdin); > //fclose(stdout); > > return 0; > } 我也遇到了相同的情况,估计是浮点精度的问题? Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator