UVa 11988 破损的键盘(链表)

原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3139

题意就是输入文本,若是遇到"["光标就移到最前面,遇到“]”光标就移到最后。

在这段代码中,在for循环中如果不用n来代替strlen(s+1),最后就会超时,以后写代码的时候我会注意到这点。

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; const int maxn = ;
int cur, last, nex[maxn];
char s[maxn]; int main()
{
while (scanf("%s",s+)==)
{
cur = last = ;
nex[] = ;
int n = strlen(s + );
for (int i = ; i <= n; i++)
{
if (s[i] == '[') cur = ;
else if (s[i] == ']') cur = last;
else
{
nex[i] = nex[cur];
nex[cur] = i;
if (cur == last) last = i;
cur = i;
}
}
for (int i = nex[]; i != ; i = nex[i])
cout << s[i];
cout << endl;
}
return ;
}
上一篇:CSS画三角形引发的一些思考


下一篇:纯 CSS 实现三角形尖角箭头的实例