Problem E: STL——灵活的线性表
来源:互联网 发布:php视频解析源码 编辑:程序博客网 时间:2024/06/06 05:56
Description
数组和链表是我们熟知的两种线性结构,但是它们不够灵活(不能同时实现直接插入、删除和访问操作),给你若干种操作,你能通过一种灵活的容器,实现它们的功能吗?
操作1:Build a b (产生一个大小为a的线性表,其值全部赋为b,每组样例仅出现一次,在起始行)
操作2:Modify a b (将线性表的第a个元素的值设为b)
操作3:Insert a b c (在线性表的第a个位置插入第b到第c个位置的所有元素)
操作4:Erase a b(删除线性表第a到第b个位置的所有元素)
操作5:Print a b (输出线性表的第a到第b个元素)
程序在执行操作5的时候要输出结果,格式如“[1]:3 [2]:4 [3]:5”([]内为线性表的位置,“:”后面为元素的值,不带引号,每组输出占一行)
Input
输入有多行,对应5个操作,以EOF结束
Output
见Sample
Sample Input
Build 10 1Modify 2 2Insert 3 1 2Modify 6 4Erase 3 5Print 1 8
Sample Output
[1]:1 [2]:2 [3]:4 [4]:1 [5]:1 [6]:1 [7]:1 [8]:1
HINT
使用vector可以很容易解决
#include <iostream>#include <vector>#include <string>using namespace std;int main(){ string l; int a,b,c,k; vector<int> s; while(cin>>l){ if(l=="Build"){cin>>a>>b;s.assign(a,b);} else if(l=="Modify"){cin>>a>>b;s[a-1]=b;} else if(l=="Insert"){cin>>a>>b>>c;s.insert(s.begin()+a-1,s.begin()+b-1,s.begin()+c);} else if(l=="Erase"){cin>>a>>b;s.erase(s.begin()+a-1,s.begin()+b);} else if(l=="Print"){ cin>>a>>b; int i; for(i=a-1;i<b;i++) { if(i!=b-1) cout<<"["<<i+1<<"]"<<":"<<s[i]<<" "; else cout<<"["<<i+1<<"]"<<":"<<s[i]<<endl; } } } return 0;}
0 0
- Problem E: STL——灵活的线性表
- Problem E: STL——灵活的线性表
- Problem : STL——灵活的线性表
- Problem A: STL——灵活的线性表
- Problem E: STL——括号匹配
- Problem E: STL——管道一
- 数据结构—Problem E: 链表的基本运算(线性表)
- Problem E: STL——呵呵型自动机
- Problem E: STL——呵呵型自动机
- Problem E: 建立链表(线性表)
- Problem E: 建立链表(线性表)
- OJ 2990 Problem E 链表的基本运算(线性表)
- oj Problem E: 链表的基本运算(线性表)
- Problem : STL——Jerry的问题
- 贪心算法—Problem E
- 动态规划—Problem E
- 图算法—Problem E
- STL有限队列的灵活运用+IO优化+区间最大最小——POJ Sliding Window
- (转)Android RippleEffect波纹效果,重写ViewGroup
- eclipse内使用tomcat项目究竟被部署到了哪里
- MFC规则DLL
- Android 自定义Camera之SurfaceView的使用(6.0权限申请)
- CSMA/CD---以太网
- Problem E: STL——灵活的线性表
- MVC
- 蓝桥杯压缩变换
- Java图形操作界面之单选操作
- const 和 static的用法及作用
- 一维数组 与指针 sizeof strlen int char
- Splay专题
- hibernate框架常见异常集锦
- Openstack容器化部署实现及参考