Problem A: STL——靈活的線性表 Problem A: STL——靈活的線性表 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2986 Solved: 1092[Submit][Status][Web Board] Description 數 ...
Home | Web Board | ProblemSet | Standing | Status | Statistics |
Problem A: STL——靈活的線性表
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2986 Solved: 1092
[Submit][Status][Web Board]
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 1 Modify 2 2 Insert 3 1 2 Modify 6 4 Erase 3 5 Print 1 8Sample Output
[1]:1 [2]:2 [3]:4 [4]:1 [5]:1 [6]:1 [7]:1 [8]:1HINT
Append Code
한국어<
中文
فارسی
English
ไทย
All Copyright Reserved 2010-2011 SDUSTOJ TEAM
GPL2.0 2003-2011 HUSTOJ Project TEAM
Anything about the Problems, Please Contact Admin:admin
#include<iostream> #include<vector> #include<string> using namespace std; int main() { string l; int m,n,k; vector<int> a; vector<int>::iterator p; ///a.clear(); while(cin>>l){ if(l=="Build"){cin>>m>>n;a.assign(m,n);} else if(l=="Modify"){cin>>m>>n;a[m-1]=n;} else if(l=="Insert"){cin>>m>>n>>k;a.insert(a.begin()+m-1,a.begin()+n-1,a.begin()+k);} else if(l=="Erase"){cin>>m>>n;a.erase(a.begin()+m-1,a.begin()+n);} else if(l=="Print") { cin>>m>>n; int i; for(i=m-1;i<n;i++) { if(i!=n-1) cout<<"["<<i+1<<"]"<<":"<<a[i]<<" "; else cout<<"["<<i+1<<"]"<<":"<<a[i]<<endl; } } } return 0; }
註:
- 註意題目要求:直到輸入EOF結束。這一點可以直接用while(cin>>l)完成!
- 註意insert(a,b)和erase(a,b)操作範圍都是前閉後開區間[a,b),所以在
Insert和
Erase語句中操作範圍分別是
a.begin()+n-1,a.begin()+k和
a.begin()+m-1,a.begin()+n
- ==運算符可以進行字元串的比較,而strcmp()函數不行,如果一定要用strcmp()需要將string轉換成char類型,感興趣的同學可以自行百度!
PS:在C++中,能用string的地方儘量不要用數組。(個人觀點!)