• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Hug_Sea
博客园    首页    新随笔    联系   管理    订阅  订阅

ZOJ 3185 List Operations

题意:字符串a+b or a-b 例:

Sample Input
[1,2,3] ++ [1,2,3]
[a,b,c,t,d,e,t,x,y,t] -- [t]
[a,b,c,t,d,e,t,x,y,t] -- [t,t,t,t]
[123] ++ [456]
.

Sample Output
[1,2,3,1,2,3]
[a,b,c,d,e,t,x,y,t]
[a,b,c,d,e,x,y]
[123,456]

思路:vector。。。。。。。。

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3185

 

View Code
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <string>
 5 #include <algorithm>
 6 #include <iostream>
 7 #include <vector>
 8 using namespace std;
 9 
10 vector<string>vec;
11 vector<string>::iterator it;
12 string str1,str2,op;
13 
14 void Push(string str1){
15     vec.clear();
16     string str;
17     int len=str1.size();
18     for(int i=1;i<len;i++){
19         if(str1[i]==','||str1[i]==']'){
20             if(str!="") vec.push_back(str);
21             str="";
22         }
23         else str+=str1[i];
24     }
25 }
26 
27 void Add(string str2){
28     string str;
29     int len=str2.size();
30     for(int i=1;i<len;i++){
31         if(str2[i]==','||str2[i]==']'){
32             if(str!="") vec.push_back(str);
33             str="";
34         }
35         else str+=str2[i];
36     }
37 }
38 
39 void Sub(string str2){
40     string str;
41     int len=str2.size();
42     for(int i=1;i<len;i++){
43         if(str2[i]==','||str2[i]==']'){
44             for(it=vec.begin();it!=vec.end();it++){
45                 if(*it==str){
46                     vec.erase(it);
47                     break;
48                 }
49             }
50             str="";
51         }
52         else str+=str2[i];
53     }
54 }
55 
56 int main(){
57     
58 //    freopen("data.in","r",stdin);
59 //    freopen("data.out","w",stdout);
60     
61     while(cin>>str1){
62         if(str1==".") break;
63         vec.clear();
64         cin>>op>>str2;
65         Push(str1);
66         if(op=="++") Add(str2);
67         else Sub(str2);
68         it=vec.begin();
69         cout<<"[";
70         if(it!=vec.end()){
71             for(it=vec.begin();it!=vec.end();it++){
72                 cout<<*it;
73                 if(it+1!=vec.end()) cout<<",";
74             }
75         }
76         cout<<"]"<<endl;
77     }
78     return 0;
79 }
posted @ 2012-05-05 23:14  Hug_Sea  阅读(152)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3