编译器的不同输出
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中出现了一些隐藏的错误,给出了错误的答案,但在其他编译器中却失败了。我应该确定网站的编译器并使用它吗?
尽管我第一次(错误)假设,OP已经发现它是2500,但在我问他"2500在哪里打印?"之后,测试函数出现了缺陷。
相关文章:
- C++编译器命令 C++ 不会生成输出
- 编译器资源管理器和 GCC 具有不同的输出
- 与其他编译器相比,相同的代码在工作室Microsoft提供不同的输出
- 编译器没有显示错误,但我没有得到任何输出.怎么了?
- 在MSDOS编译器上,用大于最大值的值初始化int时输出混乱
- 我不明白我的编译器是如何获得此输出的
- C++编译器只显示数字,不显示正确的输出
- 乘以时输出错误.这是我编译器中的错误吗?C
- Web 编译器输出奇怪的结果
- 输出错误:两个不同编译器上的不同输出:Prime Cryptarithm USACO
- 编译器将输出的流运算符<<解释为用于按位左移的二进制运算符<<
- 构建 C/C++ 代码时的 Gradle 编译器输出
- C 编译器输出由于Permisson误差而未运行
- GCC 编译器对类型转换有什么作用?为什么 mac 和 Linux 上的输出不同
- VS说"Too few arguments...",但其他编译器给了我正确的输出?
- GCC 8 交叉编译器输出 ARMv7 可执行文件而不是 ARMv6
- 以下代码的输出是什么(答案因差异编译器而异)
- 简单构造函数的复杂编译器输出
- C++程序中的输出编译器版本
- 最后的所有输出——c++编译器