1、uva 11988 Broken Keyboard

  题意:给出键盘打字的顺序,遇到[到句首,遇到]倒句末。求最后输出的句子。

  思路:

①单向链表数组模拟

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 using namespace std;
 5 const int maxn = 100100;
 6 char s[maxn];
 7 int Next[maxn];
 8 int main()
 9 {
10     while (~scanf("%s", s + 1))
11     {
12         int len = strlen(s + 1);
13         Next[0] = 0;
14         int cur = 0, last = 0;
15         for (int i = 1; i <= len; i++)
16         {
17             if (s[i] == '[')cur=0 ;
18             else if (s[i] == ']') cur = last;
19             else
20             {
21                 Next[i] = Next[cur];
22                 Next[cur] = i;
23                 if (last == cur) last = i;
24                 cur = i;
25             }
26         }
27         for (int i = Next[0]; i != 0; i = Next[i]) printf("%c", s[i]);
28         printf("\n");
29     }
30     return 0;
31 }
View Code

相关文章: