| ||||||||||
| 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 <stdio.h>
#include <math.h>
int b[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
typedef struct
{
double x, y, v, a;
}Person;
Person p[9];
int n;
double mv, temp, answer;
double calc(void)
{
int i;
double cx, cy, t, x1, x2, xi, yi, vi, ai, dx, dy, t1, t2, t3, home, total, last;
cx = 0, cy = 0, total = 0, last = 0;
for(i = 1; i <= n; i++)
{
xi = p[b[i]].x, yi = p[b[i]].y, vi = p[b[i]].v, ai = p[b[i]].a;
dx = xi - cx, dy = yi - cy;
t1 = vi * vi - mv * mv;
t2 = 2 * (dx * vi * cos(ai) + dy * vi * sin(ai));
t3 = dx * dx + dy * dy;
x1 = (-t2 + sqrt(t2 * t2 - 4 * t1 * t3)) / (2 * t1);
x2 = (-t2 - sqrt(t2 * t2 - 4 * t1 * t3)) / (2 * t1);
t = x1 > 0 ? x1 : x2;
total += t;
cx = xi + t * vi * cos(ai), cy = yi + t * vi * sin(ai);
home = total + sqrt(cx * cx + cy * cy) / vi;
if(home > last)
{
last = home;
}
}
return last;
}
void solve(int k)
{
int i, t;
if(k == n)
{
temp = calc();
if(temp < answer)
{
answer = temp;
}
}
else
{
for(i = k; i <= n; i++)
{
t = b[k]; b[k] = b[i]; b[i] = t;
solve(k + 1);
t = b[k]; b[k] = b[i]; b[i] = t;
}
}
}
int main(void)
{
int i;
while(scanf("%d", &n), n != 0)
{
scanf("%lf", &mv);
for(i = 1; i <= n; i++)
{
scanf("%lf %lf %lf %lf", &p[i].x, &p[i].y, &p[i].v, &p[i].a);
}
answer = 1e100;
solve(1);
printf("%d\n", (int) (answer + 0.5));
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator