0
点赞
收藏
分享

微信扫一扫

UVA-11988 破损的键盘( 又名: 悲剧文本) 题解答案代码 算法


GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版

虽然这是一个链表题目,但是实际上并没有为每一个节点创建内存区域,而是用一个数组形式表示每个结点的后继。

AC代码

#include<cstdio>
#include<cstring>

using namespace std;

char sin[100005];
int next[100005];
int begin, end, pos;

int main() {
int i, j, n;
while(scanf("%s", sin+1) == 1) {
next[0] = 0;
pos = 0;
end = 0;
n = strlen(sin+1);
for(i = 1; i <= n; ++i) {
if(sin[i] == '[') {
pos = 0;
continue;
}
if(sin[i] == ']') {
pos = end;
continue;
}
next[i] = next[pos];
if(pos == end) {
end = i;
}
next[pos] = i;
pos = i;
}
for(i = next[0]; i != 0; i = next[i]) {
putchar(sin[i]);
}
putchar('\n');
}
return 0;
}

举报

相关推荐

0 条评论