应届生一枚,在找工作,最近在acmcoder上做某公司的在线笔试碰到一个问题,在自己vs2013上未发现错误,可是提交后却显示正确率为0,想请教问题到底出在哪儿。
题目是这样子的,很简单:
就是一个人从家门口的车站(0,0)上车,车子沿着x轴正轴方向前进,速度是vb,他下车后以速度vs跑到目的地x,y。问从哪站下车时间会最短。
输入数据的格式是第一行三个数字n,vb,vx.第二行是n个公交车的站点坐标点,第三行是目标x,y。输出应该从第几站下车。
例如:
输入
4 5 2
0 2 4 6
2 1
输出
3
我的代码很简单,无非是有些情况没考虑到,实在想不明白为何会是全错:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n = 0, vb = 0, vs = 0, tmp = 0, x = 0, y = 0;
unsigned int result = 0;
double min_time = 0, time = 0;
while (1)
{
cin >>n>> vb >> vs;
int *station = new int[n];
for (int i = 0; i < n; i++)
cin >> station[i];
cin >> x >> y;
time = station[0] / vb + sqrt((x - station[0])*(x - station[0]) + y*y) / vs;
min_time = time;
for (int i = 0; i < n; i++)
{
time = station[i] / vb + sqrt((x - station[i])*(x - station[i]) + y*y) / vs;
min_time = min_time < time ? min_time : time;
if (min_time == time) result = i + 1;
}
cout << result << endl;
delete[]station;
station = NULL;
}
return 0;
}