码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-06-03 19:42:56      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:put   list   stdin   div   ace   boa   IV   blank   print   

题目链接:

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(数组模拟链表)

标签:put   list   stdin   div   ace   boa   IV   blank   print   

原文地址:https://www.cnblogs.com/wenzhixin/p/9129716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!