• UVa 11988 破损的键盘 链表 双向队列


    链表解决
    用数组频繁的移动元素效率较低,用链表 较好。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int next[100005];
    char s[100005];
    int main()
    {
        int last,cur;
        //freopen("shujia.txt","r",stdin);
        while(scanf("%s",s+1)!=EOF)
        {
            memset(next,0,sizeof(next));
            int n=strlen(s+1);
            last=cur=0;
            next[0]=0;
            for(int i=1;i<=n;i++)
            {
                char ch=s[i];
                if(ch=='[')
                    cur=0;
                else if(ch==']')
                    cur=last;
                else{
                    next[i]=next[cur];
                    next[cur]=i;
                    if(cur==last) last=i;
                    cur=i;
                }
            }
            for(int i=next[0];i!=0;i=next[i])
            {
                printf("%c",s[i]);
            }
            printf("
    ");
        }
        return 0;
    }

    双向队列解决
    用双向队列解决,就是每次把 [ ] 内的加在队列首段 ,其他的加在队尾就行了。

    #include<iostream>
    #include<cstring>
    #include<deque>
    #include<cstdio>
    using namespace std;
    char str[100005];
    int main()
    {
        //freopen("shujia.txt","r",stdin);
        while(scanf("%s",&str)!=EOF)
        {
            deque<int >a;
            int i=0;
            while(str[i]=='['||str[i]=='[')
                i++;
            a.push_front(i);
            while(str[i]!='')
            {
                if(str[i]=='[')
                {
                    a.push_front(i+1);
                    str[i]='';
                }
                else if(str[i]==']')
                {
                    a.push_back(i+1);
                    str[i]='';
                }
                i++;
            }
            while(!a.empty())
            {
                printf("%s",str+a.front());
                a.pop_front();
            }
            printf("
    ");
        }
        return 0;
    }
    
    
  • 相关阅读:
    QQ企业邮箱+Spring+Javamail+ActiveMQ(发送企业邮件)
    Notepad++使用图解
    Sublime Text 2安装图解
    IDE UltraEdit 图文激活+安装教程
    光猫与普通的家用猫
    通过Java Api与HBase交互(转)
    HBase配置性能调优(转)
    HBase Java API类介绍
    hbase shell基础和常用命令详解(转)
    HBase体系结构(转)
  • 原文地址:https://www.cnblogs.com/nanfenggu/p/7900106.html
Copyright © 2020-2023  润新知