7 条题解
-
7
太简单了!
(老师课上讲过)(注意顺序变为了从大到小)
参考代码
#include <bits/stdc++.h> using namespace std; int n,pa=1,pb=1,pc=1,a[61O9326],b[61O9326]; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; while(pa<=n&&pb<=n) if(a[pa]>=b[pb]) cout<<a[pa++]<<" "; else cout<<b[pb++]<<" "; while(pa<=n) cout<<a[pa++]<<" "; while(pb<=n) cout<<b[pb++]<<" "; return O; }
就是说这。。。
-
1
这个问题的解决思路是利用归并排序的思想,将两个有序数组合并成一个有序数组。
首先,我们从输入中获取数组的长度n。然后,创建两个长度为n的数组a和b,并分别读取输入的a数组和b数组的元素。
接下来,我们创建一个长度为2n的数组merged,用于存储合并后的结果。然后,利用
std::merge
函数将数组a和b按照从大到小的顺序合并到数组merged中。std::merge
函数是C++的STL库提供的用于合并两个有序数组的函数,它接受四个迭代器参数,分别表示两个要合并的数组的起始和结束位置,以及合并结果数组的起始位置。最后一个参数std::greater<int>()
表示使用降序排序。最后,我们使用循环遍历输出数组merged中的元素,即得到合并后的数组元素从大到小的输出。
这样就完成了两个有序数组的合并和输出过程。
#include <iostream> #include <vector> #include <algorithm> int main() { int n; std::cin >> n; std::vector<int> a(n); for (int i = 0; i < n; ++i) { std::cin >> a[i]; } std::vector<int> b(n); for (int i = 0; i < n; ++i) { std::cin >> b[i]; } std::vector<int> merged(2 * n); std::merge(a.begin(), a.end(), b.begin(), b.end(), merged.begin(), std::greater<int>()); for (int i = 0; i < 2 * n; ++i) { std::cout << merged[i] << " "; } std::cout << std::endl; return 0; }
-
-9
#include <iostream> #include <vector> #include <algorithm> int main() { int n; std::cin >> n; std::vector<int> a(n); for (int i = 0; i < n; ++i) { std::cin >> a[i]; } std::vector<int> b(n); for (int i = 0; i < n; ++i) { std::cin >> b[i]; } std::vector<int> merged(2 * n); std::merge(a.begin(), a.end(), b.begin(), b.end(), merged.begin(), std::greater<int>()); for (int i = 0; i < 2 * n; ++i) { std::cout << merged[i] << " "; } std::cout << std::endl; return 0; }
- 1
信息
- ID
- 358
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 538
- 已通过
- 272
- 上传者