• UVA-11988 Broken Keyboard (a.k.a. Beiju Text) (链表 或 递归)


    题目大意:将一个字符串改变顺序后输出。遇到“[”就将后面内容拿到最前面输出,遇到“]”就将后面的内容拿到最后面输出。

    题目分析:用nxt[i]数组表示i后面的字符的下标,实际上就是以字符i为头建立链表,写法类似链式前向星。

    代码如下:

    # include<iostream>
    # include<cstdio>
    # include<cstring>
    # include<algorithm>
    using namespace std;
    
    char p[100005];
    int nxt[100005],head,rear;
    
    int main()
    {
        while(scanf("%s",p+1)!=EOF)
        {
            int l=strlen(p+1);
            head=rear=0;
            nxt[0]=0;
            for(int i=1;i<=l;++i){
                if(p[i]=='[')
                    head=0;
                else if(p[i]==']')
                    head=rear;
                else{
                    nxt[i]=nxt[head];
                    nxt[head]=i;
                    if(head==rear)
                        rear=i;
                    head=i;
                }
            }
            for(int i=nxt[0];i>0;i=nxt[i])
                printf("%c",p[i]);
            puts("");
        }
        return 0;
    }
    

      

    这道题还可以用递归来解决:

    # include<iostream>
    # include<cstdio>
    # include<cstring>
    # include<algorithm>
    using namespace std;
    
    char p[100005];
    
    void print(int u)
    {
        for(int i=u;i>=0;--i){
            if(p[i]=='['){
                for(int j=i+1;j<=u;++j)
                    printf("%c",p[j]);
                print(i-1);
                break;
            }else if(p[i]==']'){
                print(i-1);
                for(int j=i+1;j<=u;++j)
                    printf("%c",p[j]);
                break;
            }
            if(i==0){
                for(int j=0;j<=u;++j)
                    printf("%c",p[j]);
            }
        }
    }
    
    int main()
    {
        while(scanf("%s",p)!=EOF)
        {
            int l=strlen(p);
            print(l-1);
            printf("
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    误卸载python2.4导致yum不能用后的修复
    网卡流量查看软件bmon
    DTD约束
    Schema约束
    SAX解析原理示意
    DOM解析原理示意
    XML中文乱码问题
    Web应用的目录结构
    手动+工具开发动态资源
    Tomcat服务器的下载及安装
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/4856558.html
Copyright © 2020-2023  润新知