zoukankan      html  css  js  c++  java
  • UVa

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    /*************************************************************************************************************
            题意:题目大意:你在输入文章的时候,键盘上的Home键和End键出了问题,会不定时的按下。
                  给你一段按键的文本,其中'['表示Home键,']'表示End键,输出这段悲剧的文本。
            思路:
            1,使用链表来模拟,遇到Home键,就将后边的文本插入到这段文本的最前边,
            2,遇到End键,就插入到这段文本的最后边。
            3,重点学习数组模拟链表的使用方法,具体写到注释里面了,好好理解。
    *************************************************************************************************************/
    
    char s[101000];
    int Next[101000];
    
    int main()
    {
        int cur,last;//cur为光标位置,last为显示屏最后一个字符
        while(cin>>s+1)
        {
            memset(Next,0,sizeof(Next));
    
            int len = strlen(s+1);
            Next[0] = 0;
            cur = last = 0;
    
            for(int i = 1; i <= len; i++){
                if(s[i] == '[')
                    cur = 0;
                else if(s[i] == ']')
                    cur = last;
                else{
                    Next[i] = Next[cur];        //第i个字符指向光标位置
                    Next[cur] = i;      //光标指向下一个字符
                    if(cur == last)     //只有光标在当前最后一个字符位置或是遇到]后才执行
                        last = i;
                    cur = i;        //移动光标
                }
            }
            for(int i = Next[0]; i != 0; i = Next[i])
                cout<<s[i];
            cout<<endl;
            memset(s,0,sizeof(s));
        }
        return 0;
    }
    



  • 相关阅读:
    批量修改同一种控件属性
    线程池的使用
    金蝶K3常用数据表
    安装更新
    ApexSQL
    c# 计算一个整型数组的平均
    sqlServer基础知识
    c# 获取字符串数组中最长的的字符串并输出最长的字符串
    c# 获取数组中最大数的值
    c# 计算1-100之间的所有质数(素数)的和
  • 原文地址:https://www.cnblogs.com/Jstyle-continue/p/6351971.html
Copyright © 2011-2022 走看看