【发布时间】:2019-03-04 02:47:59
【问题描述】:
您好,我正在尝试解决算法问题,当我向在线法官提交代码时,我不断收到运行时错误。我不知道为什么会这样。 这是我要解决的问题。
代码如下。它适用于 Visual Studio 中的示例输入和输出。我还没有遇到不能正常工作或实际遇到运行时错误的输入和输出。只有在线法官给出了运行时错误,所以我不知道为什么。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n;
int m;
int c1;
int c2;
cin >> n >> m >> c1 >> c2;
vector<int> p = {};
vector<int> q = {};
for (int i = 0; i < n; ++i)
{
int temp;
cin >> temp;
p.push_back(temp);
}
for (int i = 0; i < m; ++i)
{
int temp;
cin >> temp;
q.push_back(temp);
}
vector<int> distance = {};
for (int i = 0; i < p.size(); ++i)
{
for (int j = 0; j < q.size(); ++j)
{
distance.push_back(abs(p[i] - q[j]) + abs(c1 - c2));
}
}
sort(distance.begin(), distance.end());
int min = distance[0];
int count = 0;;
for (int i = 0; i < static_cast<int>(distance.size()); ++i)
{
if (distance[0] == distance[i])
count++;
else
break;
}
cout << min << " " << count << endl;
return 0;
}
【问题讨论】:
-
你考虑过
distance向量的大小可以为0吗? -
m和n都等于或大于1,所以距离的大小不能为0
-
@BoBTFish 我已经编辑了问题,您现在可以检查问题。
-
@SeJinKim
i、j、m、n和count的类型应为std::size_t。 -
如果n和m都是500,000那么距离使用了1TB的内存,想必在线判断不允许分配这个内存量。如果你再考虑一下这个问题,你不需要记录所有距离的值