codevs 4650 破损的键盘(链表)

Posted 一入OI深似海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codevs 4650 破损的键盘(链表)相关的知识,希望对你有一定的参考价值。

/*
之前一直不重视链表 (好吧说实话主要是看着板子都是指针就怂了T.T)
这道题比较基础 应用了链表的思想 数组模拟指针
遇到的问题就是跑着跑着光标跳到前面或者跳到后面
我们用next储存每个点下一个点在哪 这样我们不仅能往开头和结尾插入
中间任意一个地方都ok、
这题数据范围题目描述小了 0.0
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 100010
using namespace std;
int now,last,l,next[maxn];
char s[maxn];
int main()
{
    while(scanf("%s",s+1))
      {
          next[0]=0;//因为待会用到的next的部分会有赋值 所以不用memset一遍 
          l=strlen(s+1);now=last=0;
          for(int i=1;i<=l;i++)
            {
                if(s[i]==[){now=0;continue;}
              if(s[i]==]){now=last;continue;}
              next[i]=next[now];next[now]=i;//i插入now后面 
              if(now==last)last=i;now=i;
          }
        for(int i=next[0];i;i=next[i])
          printf("%c",s[i]);
        printf("\n");
      }
    return 0;
}

 

以上是关于codevs 4650 破损的键盘(链表)的主要内容,如果未能解决你的问题,请参考以下文章

链表-破损的键盘 Uva 11988

例题6-4 破损的键盘(又名:悲剧文本)(Broken Keyboard,UVa 11988)—静态链表

UVA11988破损的键盘

破损的键盘(UVa 11988)

C语言解题:破损的键盘

Uva破损的键盘