首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
UVA11988 Broken KeyBoard
时间:
2015-06-05 00:27:36
阅读:
139
评论:
0
收藏:
0
[点我收藏+]
标签:
链表的思想很简单,要做到活用也不难。一般我是这样做得,从实际问题出发,先高度的概括符不符合链表的特点。能不能用链表简单解决。接着,就是编码。
链表编码要理清细节性思路,最好是简单的画下图,正如改题的链表,本质上是循环链表。last指向最后一个节点。其next指针一定指向头节点。我们把s[0]当做头节点。
1
2
#include <cstdio>
3
#include <cstring>
4
const
int
maxn = 100000 + 5;
5
int
last, cur, next[maxn];
6
char
s[maxn];
7
int
main() {
8
9
while
( scanf("%s", s + 1) == 1) {
10
11
int
n = strlen(s + 1);
12
last = cur = 0;
13
next[0] = 0;
//
头结点初始化指向自身
14
15
for
(
int
i = 1; i <=n; i++) {
16
17
char
ch = s[i];
18
if
(‘[‘ == ch ) cur = 0;
19
else
if
(‘]‘ == ch) cur = last;
20
else
{
21
22
next[i] = next[cur];
//
next[cur]为当前光标的前一个字符,而next[i]就是当前光标要输入的字符,接着,光标还要跳到下个字符。所以我们要把当前字符next指向光标输入的字符。也就是next[cur] = i;但要先保存其next指针给输入字符。其next指针其实就是真相头结点。
23
next[cur] = i;
24
if
(cur == last) last = i;
25
cur = i;
//
指向下一个节点
26
}
27
28
}
29
30
for
(
int
i = next[0];i != 0; i = next[i]) {
31
printf("%c", s[i]);
32
}
33
puts("");
34
}
35
36
return
0;
37
}
2015/4/12上午12:10:12
UVA11988 Broken KeyBoard
标签:
原文地址:http://www.cnblogs.com/objectc/p/4553398.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!