codevs 4650 破损的键盘(链表)
来源:互联网 发布:上海 铝合金门窗 知乎 编辑:程序博客网 时间:2024/05/16 00:36
codevs 4650 破损的键盘
题目描述 Description
有一天,你需要打一份文件,但是你的键盘坏了,上面的”home”键和”end”键会时不时地按下,而你却毫不知情,甚至你都懒得打开显示器,当你打开显示器之后,出现在你的面前的是一段悲剧的文本。
输入描述 Input Description
输入只有一行,即这份文件,这份文件只包含小写字母和’[‘以及’]’,用’[‘代替”home”键,用’]’代替”end”键。
输出描述 Output Description
你的任务是在打开显示器之前,计算出这份悲剧的文档。
样例输入 Sample Input
kdg[gek]h[itj
de[co]vs
样例输出 Sample Output
itjgekkdgh
codevs
数据范围及提示 Data Size & Hint
包含多组测试数据,直到文件结束。
字符串长度小于10000个字符。
不包含空格。
思路:因为字符长度为10000且多组数据,模拟肯定是不行的,这个地方需要用到链表。
题解I:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int next[100005];char s[100005];int main(){ while(scanf("%s",s+1)!=EOF) { int n=strlen(s+1); int cur=0,last=0; next[0]=0; for(int i=1;i<=n;i++) { if(s[i]=='[') { cur=0; } else if(s[i]==']') { cur=last; } else { next[i]=next[cur]; next[cur]=i; if(cur==last) { last=i; } cur=i; } } for(int i=next[0];i!=0;i=next[i]) { printf("%c",s[i]); } printf("\n"); } return 0;}
题解II:
额,好像用vector模拟会比较简单。。
#include<iostream>#include<cstdio>#include<vector>#include<cstring>using namespace std;char a[100000+10];vector<char>v;vector<char>::iterator it;int main(){ while(scanf("%s",a+1)!=EOF) { bool flag=0; int n=strlen(a+1); int tot=0; for(int i=1;i<=n;i++) { if(a[i]!='['&&a[i]!=']') { if(flag==0) { v.push_back(a[i]); } else { v.insert(v.begin()+tot,a[i]); tot++; } } else if(a[i]=='[') { flag=1; tot=0; } else if(a[i]==']') { flag=0; } } for(it=v.begin();it!=v.end();it++) { printf("%c",*it); } printf("\n"); v.clear(); } return 0;}
2 0
- codevs 4650 破损的键盘(链表)
- codevs 4650 破损的键盘(链表)
- codevs 4650 破损的键盘(stl)
- 【codevs 4650】破损的键盘
- 【codevs 4650】破损的键盘
- 【codevs 4716】破损的键盘2
- 破损的键盘(链表)
- uva 11988 破损的键盘(链表)
- 破损的键盘(uva 11988)
- 破损的键盘(又名:悲剧文本)
- UVa 11988破损的键盘
- 破损的键盘,紫书P143UVa11988
- UVA 11988 破损的键盘
- UVa 11988 破损的键盘 链表 双向队列
- 破损的键盘(Broken KeyBoard)Uva 11988
- 例题6-4 破损的键盘 UVa11988
- string+暴力——破损的键盘
- UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(破损的键盘(又名:悲剧的文本))(链表)
- selenium+eclipse配置
- 小米4C直接解锁、刷入TWRP、CM13和Gapps
- How to Install CM13 (CyanogenMod 13)
- 在Ubuntu环境下用QT5开发树莓派的GPIO程序(使用wiringPi库)之三 DS18B20
- How to Install CM13 (CyanogenMod 13) Via TWRP Recovery On Any Android
- codevs 4650 破损的键盘(链表)
- 测试了一下ics和indy10 http都有经常断线的情况
- gdb--多线程调试
- Hadoop 核心概念解析
- 深入了解Windows句柄到底是什么
- JSON 学习笔记
- go cgo
- 关于Android的TextView
- Chromium插件(Plugin)实例(Instance)创建过程分析