3056 小明爱数列 vector(小学生发布请多多关照)
2021/9/5 23:11:21
本文主要是介绍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 提供的标准函数操作数据即可
这篇关于3056 小明爱数列 vector(小学生发布请多多关照)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享