[英]different output with compilers?
我正在解决站点上的编程问题。 在我的机器上(Visual Studio 2010),一个测试用例给出错误的结果,而在现场给出正确的结果。 我不确定网站的判断器是什么编译器,但我认为它类似于gcc或cygwin。
编码
图问题。 此处的图形表示为树。 该图是有向的,不包含循环。 解决方案是(2 * sum of all edges - max path length from root)
// to-vertex & edge-length
vector<pair<int, int> > pr[100];
int dfs(int i) // to find max path length from root
{
int mx = 0;
for (int j = 0; j < pr[i].size(); ++j)
mx = max(mx, dfs(pr[i][j].first) + pr[i][j].second);
return mx;
}
int PowerOutage::estimateTimeOut(vector <int> from_vertex,
vector <int> to_vertex, vector <int> edge_length)
{
int tot = 0;
for (int i = 0; i < from_vertex.size(); ++i)
{
pr[from_vertex[i]].push_back(make_pair(to_vertex[i], edge_length[i]));
tot += (2 * edge_length[i]);
}
return tot - dfs(0);
}
测试案例
from_vertex {0, 0, 0, 0, 0}
to_vertex {1, 2, 3, 4, 5}
edge_length {100, 200, 300, 400, 500}
Visual Studio返回:2493 , 而站点的编译器返回正确的答案:2500 。
为什么两个结果不同? 我认为VS中出现了一些隐藏的错误(在我的代码中),给出了错误的答案,但在其他编译器中却出现了Disapper。 我应该确定站点的编译器并改用它吗?
尽管我的第一个(错误的)假设,OP已经发现它已经是2500,但是在我问他“ 2500打印在哪里?”之后,测试功能还是存在缺陷。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.