码迷,mamicode.com
首页 > 其他好文 > 详细

Uva 11988 Broken Keyboard

时间:2016-05-16 21:40:13      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

因为要经常移动这些字符,所以采用的数据结构是链表。

next[i]起到的作用大概就是类似链表里的next指针。

0.需要注意的是,判断cur == last ? 如果 是 则 last=i

1.另外一点是,输入的时候把next[0]空出来,起链表里面空白头结点的作用。所以输入的时候有个小改动

  从s+1开始填入字符,计算长度的时候也是从s+1开始计算,s代表的是这个数组的首地址。

2.直接往oj上交的时候要注意,next数组名要改一下

 2.

1  while(~scanf("%s",s+1))
2     {
3         int len=strlen(s+1);
4         ......
5      }    

 

 

 

 

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 const int maxn= 100000 +5;
 6 int next[maxn];
 7 char s[maxn];
 8 int main()
 9 {
10     while(~scanf("%s",s+1))
11     {
12         int len=strlen(s+1);
13         int last=0,cur=0;
14         next[0]=0;
15         for(int i=1;i<=len;i++)
16         {
17             if(s[i]==[)
18             {
19                 cur=0;
20             }
21             else if(s[i]==])
22             {
23                 cur=last;
24             }
25             else
26             {
27                 next[i]=next[cur];
28                 next[cur]=i;
29                 if(cur==last) last=i;//***
30                 cur=i;
31             }
32         }
33         for(int i=next[0];i!=0;i=next[i])
34         {
35             cout<<s[i];
36         }
37         cout<<endl;
38     }
39 
40     return 0;
41 }

 

Uva 11988 Broken Keyboard

标签:

原文地址:http://www.cnblogs.com/luosuo10/p/5499329.html

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