c编程求两组整数的交集,即在两组整数中都出现的整数,并按从大到小的顺序输出。若交集为空,则什么都不输出。
时间: 2024-10-14 22:12:43 浏览: 34
Python3实现计算两个数组的交集算法示例
在C语言中,你可以通过创建两个哈希集合(如`unordered_set`或`std::set`,因为它们自动去重并保持插入顺序)来求解这个问题。下面是一个简单的步骤描述:
1. 创建两个`std::set`容器,分别存储两组整数。
2. 遍历每组整数,将每个元素添加到相应的集合中。
3. 使用`std::set`的交集操作来找出两个集合共有的元素。
4. 如果交集非空,将其转换为一个数组(例如`std::vector<int>`),因为`std::set`内部排序是从大到小的。
5. 再次遍历这个数组,从大到小地打印出交集中的元素。
以下是伪代码和部分示例代码:
```cpp
#include <iostream>
#include <set>
#include <vector>
void findIntersection(const std::vector<int>& set1, const std::vector<int>& set2) {
std::set<int> s1(set1.begin(), set1.end());
std::set<int> s2(set2.begin(), set2.end());
std::set_intersection(s1.begin(), s1.end(), s2.begin(), s2.end(), std::back_inserter(result));
if (!result.empty()) {
std::vector<int> result_vec(result.begin(), result.end());
for (int num : result_vec) {
std::cout << num << " ";
}
std::cout << std::endl;
} else {
std::cout << "No intersection.\n";
}
}
int main() {
// 示例数据
std::vector<int> set1 = {10, 20, 30, 40, 50};
std::vector<int> set2 = {30, 40, 60, 70, 80};
findIntersection(set1, set2);
return 0;
}
```
在这个例子中,`findIntersection`函数会输出`50 40 30`,因为这是两个集合的交集,按照从大到小的顺序排列。
阅读全文