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 (链表)

UVa11988 Broken Keyboard 损坏的键盘list

UVa 11988 Broken Keyboard(数组模拟链表)