| ||||||||||
| 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