3056 小明爱数列 vector(小学生发布请多多关照)
作者:互联网
小明非常喜欢数列,于是他提出了一个关于数列的问题。他拿到一个长度为n的数列,之后对这个数列进行了两种操作:
第一种:D x
表示删除数列第x位置的一个数字,后面的数字向前移动(若x>此时数列长度则操作无效);
第二种:Z x y
表示在数列的第x位置插入一个数字y,后面的数字向后移动(若x>此时数列长度则在数列末尾插入y);
经过k次这两种操作以后,小明想要知道现在的数列是什么,聪明的你可以帮助小明解决这个问题吗?(不能(滑稽))
输入格式
输入包括k+2行数据; 第一行包括两个数n,k,分别表示数列中数的个数以及操作的次数,其中1=<k<=n<5000; 第二行n个数表示该数列的n个数,以空格隔开,其中任意数ai为int范围内的整数; 第三行到第k+2行,每行一个操作,格式见题面描述。
输出格式
输出包括两行; 第一行一个数m,表示全部操作之后数组的长度; 第二行m个数,表示当前的数组。
输入样例
4 3
4 5 2 1
Z 3 3
Z 0 1
D 2
输出样例
5
1 4 2 3 1
数据范围
对于10%的数据,1 <= n <= 4; 对于50%的数据,1 <= n <= 1024; 对于100%的数据,1 <= k<= n <=5000,且ai,x,y是int范围内的整数。
样例解释
初始数组为(4 5 2 1)
执行完Z 3 3得到(4 5 2 3 1)
执行完Z 0 1得到(1 4 5 2 3 1)
执行完D 2得到(1 4 2 3 1)
#include <bits/stdc++.h>//版权归熬夜的Alan Walker所以,侵权必究
using namespace std;//使用命名空间
int x,y,m,numone,numtwo;//定义所需要的变量
char n;//定义所需要的字符 n
int main() {
vector<int> c;//定义vector数组
cin>>x>>y;//输入x,y。x为数组个数,y为插入或删除个数
for (int i = 0; i < x; i++) {
cin>>m;//输入末尾的数
c.push_back(m);//添加
}
for(int i=0; i<y; i++) {//不可使用Switch,否则判断不了
cin>>n;//输入字符
if(n=='D') {
cin>>numone;//删除的数
if(numone<c.size())//可以判断是否大于数组,如果不是就执行,否则就不执行
c.erase(c.begin() + numone);//
}
if(n=='Z') {
cin>>numone>>numtwo;
if(numone>c.size())//判断是否大于数组,是就加入到后面
c.push_back(numtwo);
else
c.insert(c.begin()+numone, numtwo);//不是就直接插入
}
}
cout<<c.size()<<endl;//输出个数
for (int i = 0; i < c.size(); i++)
cout << c[i] << " ";//输出数组
return 0;//退出
}
调用 vectorvector 提供的标准函数操作数据即可
标签:小明,数列,int,多多关照,numtwo,vector,数组,3056,numone 来源: https://blog.csdn.net/m0_60950850/article/details/120122810