UVa 11988 Broken Keyboard(数组模拟链表)
Posted Reqaw’s Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVa 11988 Broken Keyboard(数组模拟链表)相关的知识,希望对你有一定的参考价值。
题目链接:
https://cn.vjudge.net/problem/UVA-11988
1 /* 2 问题 将一段文本经过一定的规则处理后输出,规则就是[表示home键,表示光标跳到行首,]表示end键,表示光标跳到行末 3 4 解题思路 5 可以发现[]是可以嵌套的,采用纯模拟比较复杂,采用类似KMP中的next数组一样,记录一下每个字符的下一个字符位置,最后 6 输出即可。 7 */ 8 #include<iostream> 9 #include<cstdio> 10 #include<cstring> 11 #include<list> 12 const int maxn=101000; 13 using namespace std; 14 15 char str[maxn]; 16 int nex[maxn]; 17 int main() 18 { 19 int i,len,cur,las; 20 //freopen("E:\\testin.txt","r",stdin); 21 while(scanf("%s",str+1) != EOF){ 22 len=strlen(str+1); 23 cur=las=0; 24 nex[0]=0; 25 for(i=1;i<=len;i++){ 26 if(str[i] == ‘[‘) 27 cur=0; 28 else if(str[i] == ‘]‘) 29 cur=las; 30 else{ 31 nex[i]=nex[cur]; 32 nex[cur]=i; 33 if(cur == las) las = i; 34 cur =i; 35 } 36 } 37 38 for(i=nex[0];i != 0;i=nex[i]){ 39 printf("%c",str[i]); 40 } 41 puts(""); 42 } 43 return 0; 44 }
以上是关于UVa 11988 Broken Keyboard(数组模拟链表)的主要内容,如果未能解决你的问题,请参考以下文章
UVA 11988 Broken Keyboard (a.k.a. Beiju Text)
UVA——11988 Broken Keyboard (a.k.a. Beiju Text)
Uva 11988 Broken Keyboard STL+链表
Broken Keyboard (a.k.a. Beiju Text) UVA - 11988 (链表)