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 破损的键盘(链表)的主要内容,如果未能解决你的问题,请参考以下文章