Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为啥Language选C就AC,选GCC就WA呢?

Posted by QianZiHan at 2012-07-14 23:42:05 on Problem 2677
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator