【发布时间】:2021-06-15 13:41:47
【问题描述】:
给定两个大小分别为 N 和 M 的整数 A 和 B 数组。用四个参数编写一个名为 MIX 的函数,它将生成并返回名为 C 的第三个数组,从而遵循以下顺序。
-从左到右的所有奇数A都从左到右复制到C中。 - A 从左到右的所有 eve 数都从右到左复制到 C 中。 - 从左到右的所有奇数 B 都从左到右复制到 C 中。 -从左到右的所有偶数B都从右到左复制到C中。
示例 #1
输入
6 7
3 2 1 7 6 3
9 3 5 6 2 8 10
输出
3 1 7 3 9 3 5 10 8 2 6 6 2
c++代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> insert (vector<int> &a, vector<int> &b)
{
vector<int>c;
for (int i = 0 ;i < a.size() ; i ++)
{
if (a[i]%2!=0 )
c.push_back(a[i]);
else
c.insert(c.begin(),a[i]);
}
for(int j = 0; j < b.size() ; j++)
{
if (b[j]%2!=0 )
c.push_back(b[j]);
else
c.insert(c.begin(),b[j]);
}
return c;
}
int main (void){
int as;
int bs;
cin>>as>>bs;
vector<int> a(as);
vector<int> b(bs);
for(int i =0 ; i <a.size();i++)
{
cin>>a[i];
}
for(int k =0 ; k<b.size();k++)
{
cin>>b[k];
}
vector<int> c=insert(a,b);
for(int & v: c)
cout<<v<<" ";
return 0;
}
【问题讨论】:
-
首先欢迎来到 Stack Overflow。请阅读the help pages,接受SO tour,阅读How to Ask,以及this question checklist。请了解如何创建minimal reproducible example。
-
至于您的问题,您所做的基本上是 排序 数组,但不是使用值之间的相对顺序,而是只检查奇数/偶数。因此,您需要对数组进行排序,并使用奇数“小于”偶数的排序函数。
-
欢迎您!不错的运动。但是我们不想通过为您提供现成的解决方案来破坏您编码的乐趣。请自行尝试并返回一些代码,看看我们能做些什么来支持你:-)
-
@Someprogrammerdude 会不会更像是过滤(即
copy_if对 A 使用前向迭代器,对 B 使用后向迭代器,在这两种情况下都指向后向插入器)? -
@Christophe 可能我错过了关于来自两个不同来源的数据的部分。如果所有数据都已经收集到一个容器中,并且就地修改它,我的解决方案会更合适。
标签: c++ arrays sorting arraylist arr