#include <iostream> #include <vector> #include <algorithm> #include <unordered_map> using namespace std; vector<float> findStonePairs(const vector<float> &stones, float D) { vector<vector<float>> result; unordered_map<float, int> map; for (int i = 0; i < stones.size(); i++) { float target1 = stones[i] - D; if (map.count(target1)) { return vector<float>{target1, stones[i]}; // weight // result.push_back(vector<float>{target1, stones[i]}); // weight } float target2 = stones[i] + D; if (map.count(target2)) { return vector<float>{target2, stones[i]}; // weight // result.push_back(vector<float>{target2, stones[i]}); // weight } map[stones[i]] = i; } return vector<float>{-1, -1}; } int main() { float d = 5.0; vector<float> weights_test1 = {1.3, 3.2, 6.3, 4, 6, 5}; vector<float> result_test1 = findStonePairs(weights_test1, d); cout << "test1:" << endl; for (auto x : result_test1) { cout << x << " "; cout << endl; } return 1; }为什么输出与预期不同
时间: 2023-12-10 19:42:10 浏览: 36
你的输出与预期不同,可能是由于代码中的问题导致的。我看到你的代码中有两个问题:
1. 当找到第一组符合条件的石头对时,你直接返回一个vector,而不是将这个vector加入到result中。这意味着函数只返回一对石头,而不是所有符合条件的石头对。
2. 你的输出语句被放在了错误的位置,导致输出的格式不正确。你应该在for循环外面输出换行符,而不是在循环内部。
下面是修改后的代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
vector<vector<float>> findStonePairs(const vector<float> &stones, float D) {
vector<vector<float>> result;
unordered_map<float, int> map;
for (int i = 0; i < stones.size(); i++)
{
float target1 = stones[i] - D;
if (map.count(target1))
{
result.push_back(vector<float>{target1, stones[i]}); // weight
}
float target2 = stones[i] + D;
if (map.count(target2))
{
result.push_back(vector<float>{target2, stones[i]}); // weight
}
map[stones[i]] = i;
}
return result;
}
int main() {
float d = 5.0;
vector<float> weights_test1 = {1.3, 3.2, 6.3, 4, 6, 5};
vector<vector<float>> result_test1 = findStonePairs(weights_test1, d);
cout << "test1:" << endl;
for (auto x : result_test1)
{
for (auto y : x)
{
cout << y << " ";
}
cout << endl;
}
return 1;
}
```
这个修改后的代码应该可以输出正确的结果。你可以再试一下,看看是否符合你的预期。