赞
踩
题目说的很清楚,我们直接枚举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"; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。