UVa 11988 ------ Broken Keyboard

原创 2015年11月20日 16:02:21

题目:UVa 11988


/*
	UVa 11988 ------ Broken Keyboard
*/
#include <cstdio>
#include <cstring>

const int maxn = 100000 + 5;
int cur, last, next[maxn];
char s[maxn];

int main()
{
	while (scanf("%s", s + 1) == 1){//从s[1]开始存取
		//初始化工作
		int len = strlen(s + 1);
		last = cur = 0;
		next[0] = 0;

		//将字符串利用next串起来,其中cur为当前光标的位置
		for (int i = 1; i <= len; ++i){
			char ch = s[i];	//获取当前字符
			if ('[' == ch)
				cur = 0; //cur标记当前光标位置,遇到[则标记为0
			else if (']' == ch)
				cur = last;	//cur标记当前位置,last标记最后一个字母的位置,遇到]则将cur设置为last
			else{
				//普通字母,则在cur之后,next[cur]之前插入i位置的字符(链表的插入)
				next[i] = next[cur];
				next[cur] = i;	//链表的插入
				if (cur == last)
					last = i;	//若在尾部插入则更新尾指针
				cur = i; //移动光标
			}
		}//for(i)
		for (int i = next[0]; i != 0; i = next[i]){
			printf("%c", s[i]);
		}//for(i)
		puts("");
	}//while(s)

	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

例题6-4 破损的键盘 UVa11988

1.题目描述:点击打开链接 2.解题思路:本题利用链表解决。每输入一个字符,就把它存起来,设输入字符串是s[1...n],则可以用Next[i]表示在当前显示屏中s[i]右边的字符编号。为了便于后续...
  • u014800748
  • u014800748
  • 2015年03月29日 19:49
  • 1705

例题6-4 破损的键盘(又名:悲剧文本)(Broken Keyboard(a.k.a. Beiju Text), UVa 11988)

#ifdef _DEBUG #pragma warning(disable : 4996) #endif #include #include #include #include #includ...
  • chcnsn
  • chcnsn
  • 2017年07月28日 10:21
  • 174

UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(破损的键盘(又名:悲剧的文本))(链表)

Question: Broken Keyboard (a.k.a. Beiju Text) You’re typing a long text with a broken keyboard. We...
  • peach_yang
  • peach_yang
  • 2016年09月08日 13:50
  • 137

破损的键盘(uva 11988)

题目大意:你在输入文章的时候,键盘上的Home键和End键出了问题,会不定时的按下。给你一段按键的文本,其中’[‘表示Home键,’]’表示End键,输出这段悲剧的文本。思路:使用链表来模拟,遇到Ho...
  • Dextrad_ihacker
  • Dextrad_ihacker
  • 2015年11月28日 21:57
  • 427

服务器遇到Broken Pipe崩溃

==============================第1篇===================================================== 最近产品线中又碰到Bro...
  • down177
  • down177
  • 2015年04月22日 08:44
  • 1447

job broken 问题的处理及相关知识

OS suse10 DBMS 11.1.07 有物化视图不能正确刷新,其实定议物化视图时自动衍生出一job ,根据刷新时间刷新物化视图 看job 的相关信息可以在user_jobs 里. 查看信...
  • yobyin
  • yobyin
  • 2013年05月17日 17:00
  • 1165

Uva 11988 例题6-4 破损的键盘

//这是刘汝佳紫书上的代码,开始我咋都看不懂,这怎么就实现了链表(不用指针)呢?后来百度了下,用的是 数组模拟(就是用一个数组来存储下个字符的索引)。 就算是明白了数组模拟,我还是不明白其代码的含义,...
  • xunfengdumo
  • xunfengdumo
  • 2017年08月04日 11:36
  • 106

例题6-4 破损的键盘 UVa 11988

题意:字符'['表示句首,就是光标移到了句首,’】‘表示句尾 分析:这题看到有人用双端队列,把[加入队首,】加入队尾,再按照队列中的顺序输出 #include #include #include ...
  • loveyou11111111
  • loveyou11111111
  • 2015年09月16日 08:58
  • 316

Broken pipe异常分析及解决

Broken pipe异常分析报告 错误描述 ClientAbortException: java.io.IOException: Broken pipe 可能出现原因: TCP服务端write数据时...
  • ooppookid
  • ooppookid
  • 2017年02月06日 13:26
  • 20567

紫书例题6-4 UVa 11988 ( 链表

用数组模拟链表 ,以前只用过指针模拟,数组方便了不少啊 没什么好说的这里写代码片...
  • wang2332
  • wang2332
  • 2017年04月18日 17:17
  • 94
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 11988 ------ Broken Keyboard
举报原因:
原因补充:

(最多只允许输入30个字)