题目来源
题目描述
题目解析
题目说的很清楚,我们直接枚举A中的每一个元素,看能够满足题目要求的的输出即可
int main() {
int R = 5;
std::vector<int> A {1, 5, 5, 10};
std::vector<int> B{1, 3, 8, 8, 20};
std::vector<std::vector<int>> ans;
for (int i : A) {
for (int j : B) { // 这里可以用二分优化
if(i <= j && std::abs(i - j) <= R){
ans.push_back({i, j});
break;
}
}
}
for (auto & an : ans) {
std::cout << an[0] << "\t" << an[1] <<"\n";
}
}
优化,其实B并不需要每次从头开始找
int main() {
int R = 5;
std::vector<int> A {1, 5, 5, 10};
std::vector<int> B{1, 3, 8, 8, 20};
int j = 0;
std::vector<std::vector<int>> ans;
for (int i : A) {
for (; j < B.size(); ++j) {
auto b = B[j];
if(i <= b && std::abs(i - b) <= R){
ans.push_back({i, b});
break;
}
}
}
for (auto & an : ans) {
std::cout << an[0] << "\t" << an[1] <<"\n";
}
}