UVa11988 Broken Keyboard 损坏的键盘【list】
题目链接:https://vjudge.net/problem/UVA-11988
题目大意:
键盘的home键和end键出现了问题。
在输入一段文本时,home键或end键可能会自动被按下,home键会使光标移动到文章开头,end键会使光标移动到文章结尾。
输入包含多组数据,每组数据一行,包含不超过100000个字母,表示输入文本。[表示home键按下,]表示end键按下。
对每组输入输出一行,表示你在显示屏上看到的文本。
#include <iostream>
#include <cstdio>
#include <string.h>
#include <list>
using namespace std;
char str[];
int main()
{
while(scanf("%s",str)!=EOF){
list<char> l;
list<char>::iterator p = l.begin();
int len = strlen(str);
for(int i=; i<len; i++){
if(str[i]=='[')p = l.begin();
else if(str[i]==']')p = l.end();
else l.insert(p, str[i]);
}
for(p = l.begin(); p!=l.end(); ++p)cout << *p;
cout << endl;
}
return ;
}
模拟链表
#include <iostream>
#include<string.h>
#include <algorithm>
using namespace std;
const int maxn = + ; char buf[maxn];
int Next[maxn]; int main(){
int cur, last,n;
while (scanf("%s", buf+)!=EOF){
n = strlen(buf + );
cur = last = ;
for (int i = ; i <= n; i++){
if (buf[i] == '[')cur = ; //house键
else if (buf[i] == ']')cur = last; //end键
else{
Next[i] = Next[cur]; //字符i的下一个位置为cur的下一个位置
Next[cur] = i; //curr的下一个位置为i
//更新cur和last
if (cur == last)last = i; //cur等于i表示光标在显示屏最后一个字符
cur = i; //移动光标
}
}
Next[last] = ; //结束位置
for (int i = Next[]; i != ; i = Next[i])
printf("%c", buf[i]);
printf("\n");
}
return ;
}
2018-03-30
UVa11988 Broken Keyboard 损坏的键盘【list】的更多相关文章
- UVA11988 Broken KeyBoard
链表的思想很简单,要做到活用也不难.一般我是这样做得,从实际问题出发,先高度的概括符不符合链表的特点.能不能用链表简单解决.接着,就是编码.链表编码要理清细节性思路,最好是简单的画下图,正如改题的链表 ...
- UVA-11988 Broken Keyboard (a.k.a. Beiju Text) (链表 或 递归)
题目大意:将一个字符串改变顺序后输出.遇到“[”就将后面内容拿到最前面输出,遇到“]”就将后面的内容拿到最后面输出. 题目分析:用nxt[i]数组表示i后面的字符的下标,实际上就是以字符i为头建立链表 ...
- UVA11988 Broken Keyboard (a.k.a. Beiju Text)【数组模拟链表】
参考:https://blog.csdn.net/lianai911/article/details/41831645 #include <iostream> #include <c ...
- UVa11988 Broken Keyboard (a.k.a. Beiju Text)
题目复制太麻烦了,甩个链接 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693 直接模拟光标操作时间复杂度较高,所以用链 ...
- UVa11988 Broken Keyboard(练习链表使用)
向量和数组的优势是可以随机的存取元素和在末尾添加删除元素,而当插入元素时,需要移动大量的数据,消耗大量的时间.而链表的优势是可以在O(1)删除和插入数据.所以在频繁移动元素时,可以使用链表. 分析:如 ...
- UVa 11998 Broken Keyboard (数组模拟链表问题)
题目链接: 传送门 Broken Keyboard #include<bits/stdc++.h> using namespace std; char str[100010]; int m ...
- 破损的键盘(悲剧文本)(Broken Keyboard(a.k.a. Beiju Text),Uva 11988)
破损的键盘(悲剧文本)(Broken Keyboard(a.k.a. Beiju Text),Uva 11988) 题意描述 你在输入文章的时候,键盘上的Home键和End键出了问题,会不定时的按下. ...
- PAT1084:Broken Keyboard
1084. Broken Keyboard (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue On a ...
- B - Broken Keyboard (a.k.a. Beiju Text) 数组模拟链表
You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem wi ...
随机推荐
- Confluence 6 配置 workbox 通知
你可以在你的 Confluence workbox 中查看和管理应用内的通知和任务.更多的,你可以在 Confluence workbox 中从接收到从 JIRA 和其他 Confluence 服务器 ...
- java多线程快速入门(十七)
多线程通讯实例(必须要有多个线程.必须要管理同一个变量:线程A生产一个变量,线程B消费一个变量) package com.cppdy; class User { public String usern ...
- Python学习【第2篇】:Python数据结构
Python数据结构 1.数字类型 2.字符串 3.列表 4.元组 5.字典 6.集合
- redis-4.0.8 配置文件解读
# Redis configuration file example.## Note that in order to read the configuration file, Redis must ...
- 【ES】学习10-聚合3
聚合是在查询匹配的文档中做统计的 不指定查询语句时,从所有文档中匹配. 下面两个语句等价: GET /cars/transactions/_search { , "aggs" : ...
- python网络爬虫笔记(九)
4.1.1 urllib2 和urllib是两个不一样的模块 urllib2最简单的就是使用urllie2.urlopen函数使用如下 urllib2.urlopen(url[,data[,timeo ...
- 论文阅读笔记三十七:Grid R-CNN(CVPR2018)
论文源址:https://arxiv.org/abs/1811.12030 开源代码:未公开 摘要 本文提出了目标检测网络Grid R-CNN,其基于网格定位机制实现准确的目标检测.传统方法主要基于回 ...
- 饮冰三年-人工智能-Python-11之HelloWorld
1:安装不在介绍,下载软件下一步即可,配置环境变量(Python37会默认配置环境变量的) D:\Programs\Python\Python37\Scripts\;D:\Programs\Pytho ...
- 变相实现textarea文本域
效果图: html: <div> <form action=""> <div class="ta-div" contentedit ...
- python with语句中的变量有作用域吗?
一直以为python中的with语句中的变量,只在with语句块中起作用.不然为什么要缩进一个级别呢? 呵呵,然而并没有为with语句内的变量创建新的作用域. 举例: # test.py with o ...