武大邀请赛 第八题 Key Logger

来源:互联网 发布:淘宝浏览器秒杀插件 编辑:程序博客网 时间:2024/05/01 15:22

题目地址: http://acm.whu.edu.cn/land/problem/detail?problem_id=1478


一道纯粹的模拟题目,用链表做,可惜链表没学好。

看了别人的代码,用的是STL,好强大,遂偷之。

看来自己还要好好学学。


代码如下:

#include<iostream>#include<sstream>#include<fstream>#include<vector>#include<list>#include<deque>#include<queue>#include<stack>#include<map>#include<set>#include<bitset>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<cctype>#include<cmath>#include<ctime>using namespace std;const double eps=(1e-8);typedef long long LL;struct str{    list<char> s ;    list<char>::iterator x ;    void clear()    {        s.clear() ;        x=s.end() ;    }    void movef()    {        if (x==s.begin()) return ;        x--;    }    void moveb()    {        if(x==s.end()) return ;        x++;    }    void del()    {        if(x==s.begin()) return ;    x--;        x=s.erase(x) ;    }    void insert(char c)    {        s.insert(x,c);    }    string show()    {        string ret="";        list<char>::iterator d ;        for(d=s.begin();d!=s.end();d++)            ret+=*d;        return ret;    }}mystr;char ss[1100000];int main(){    int T,i;    int ca=0;    scanf("%d",&T) ;    while(T--)    {        scanf("%s",ss );        mystr.clear() ;        int l=strlen(ss) ;        for(i=0;i<l;i++)        {            if(ss[i]=='<') mystr.movef();            else if(ss[i]=='>') mystr.moveb() ;            else if(ss[i]=='-') mystr.del() ;            else mystr.insert(ss[i]) ;        }        printf("Case %d: %s\n",++ca,mystr.show().c_str());    }    return 0;}


原创粉丝点击