原题链接:蓝桥杯算法提高VIP-数组替换
解题思路:
分别用两个vector容器存储输入的数据,把两个数组中要求取出的元素放到一个容器中,最后整体输出
注意事项:
判断要取出的两个数组的元素的个数加起来是否超过了原本的第一个数组的大小,如果没有超过原始大小,那么还要把第一个数组中最后的元素输出
记得最后+判断是否是最后一个元素,最后一个元素直接endl;
参考代码:
#include<iostream>
#include<vector>
using namespace std;
void Add(vector<int> v1,vector<int> v2,int x,int y);
int main()
{
vector<int> v1;
vector<int> v2;
int n,m;
int x,y;
cin>>n>>m;
for(int i=0;i<n;i++)
{
int value;
cin>>value;
v1.push_back(value);
}
for(int i=0;i<m;i++)
{
int value;
cin>>value;
v2.push_back(value);
}
cin>>x>>y;
Add(v1,v2,x,y);
return 0;
}
void Add(vector<int> v1,vector<int> v2,int x,int y)
{
vector<int> v;
if(x+y>=v1.size())
{
for(int i=0;i<x;i++)
{
v.push_back(v1[i]);
}
for(int i=0;i<y;i++)
{
v.push_back(v2[i]);
}
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
if(it==v.end()-1)
{
cout<<*it<<endl;
}
else
{
cout<<*it<<",";
}
}
}
else
{
for(int i=0;i<x;i++)
{
v.push_back(v1[i]);
}
for(int i=0;i<y;i++)
{
v.push_back(v2[i]);
}
for(int i=x+y;i<v1.size();i++)
{
v.push_back(v1[i]);
}
for(vector<int>::iterator it=v.begin();it!=v.end();it++)
{
if(it==v.end()-1)
{
cout<<*it<<endl;
}
else
{
cout<<*it<<",";
}
}
}
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复