课程设计 大爱线性表 线性表头尾处理 (strlen耗时的可怕)
来源:互联网 发布:电脑硬件温度检测软件 编辑:程序博客网 时间:2024/05/02 00:00
不少参赛同学刚学数据结构,对线性表最是熟悉不过。这里我们给线性表增加两个特殊的操作,第一个是‘R’ 操作,表示逆转整个表,如果表长为L,原来的第i个元素变成第L-i+1个元素。第二个操作是‘D’,表示删除表的第一个元素,如果表为空,则返回一个“error”信息。我们可以给出一系列的‘R’ 和‘D’组合,例如“RDD”表示先逆转表,然后删除最前面的两个元素。
本题的任务是给定表和一个操作串S,求出执行S后的表,如果中途出现‘D’操作于空表,输出“error”。
输入
第一行是一个整数,表示有多少组数据。每组测试数据格式如下:
(1)第一行是操作串S,有‘R’ 和‘D’组成,S的长度大于0,不超过100 000。
(2)第二行是整数n,表示初始时表中的元素个数。n的值不小于0,不超过100 000
(3) 第三行是包含n个元素的表,用‘[’ 和 ‘]’括起来,元素之间用逗号分开。各元素值在[1,100]之间。
输出
对于每一组测试数据,输出执行S后的表(格式要求同输入)或者“error”。
样例输入
4
RDD
4
[1,2,3,4]
DD
1
[42]
RRD
6
[1,1,2,3,5,8]
D
0
[]
样例输出
[2,1]
error
[1,2,3,5,8]
error
思路:照着题目模拟即可,数组链表均可以,刚开始用链表搞了一个上午,莫名的RE,回去又写了一发,但是TLE,算法时间复杂度O(N)啊,最后想起来strlen消耗大量的时间,在平时的题目中,因为数据的范围小,所以显现不明显,但在此数据范围中,100000次strlen,就体现了耗时的可怕,这是本次程序的一个小结
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>using namespace std;#define N 100005int main(){ char ch,c[N]; int icase,n,s[N]; cin>>icase; while(icase--) { cin>>c; cin>>n; cin>>ch; for(int i=1;i<=n;i++){ if(i==1&&n==1) cin>>s[i]; else if(i==n) cin>>s[i]; else cin>>s[i]>>ch; } cin>>ch; int l=1,r=n,cnt=1,flag=1,llength=strlen(c); for(int i=0;i<llength;i++) { if(c[i]=='R') cnt++; else { if(l<r){ if(cnt%2==0) r--; else l++; } else { flag=0; cout<<"error"<<endl; break; } } } if(flag) { cout<<"["; if(cnt%2==1){ for(int i=l;i<=r;i++){ if(i!=r) cout<<s[i]<<","; else cout<<s[i]; } } else { for(int i=r;i>=l;i--){ if(i!=l) cout<<s[i]<<","; else cout<<s[i]; } } cout<<"]"<<endl; } } return 0;}
阅读全文
0 0
- 课程设计 大爱线性表 线性表头尾处理 (strlen耗时的可怕)
- 大爱线性表
- 问题 F: 大爱线性表
- HNUST 问题 F: 大爱线性表
- 问题 F: 大爱线性表
- (一)线性表头文件
- 带表头的线性链表的实现
- 线性表的链式实现(单链表)——有独立表头的实现
- 线性表的链式实现(单链表)——无独立表头的实现
- 课程设计3--线性链表
- 线性表---学生成绩管理--数据结构课程设计
- 线性表头插法
- 线性表- 大整数操作
- 线性区的底层处理
- 一个无序线性表,查找最小值,并插在表头
- 线性表—线性表的合并
- 线性表的线性存储及其运算
- 线性表的线性存储结构
- Epoll详解
- 助你完全理解React高阶组件(Higher-Order Components)
- hive性能调优
- 《android多媒体api》之AudioTrack原始音频pcm播放api
- PostgreSQL 设置单条SQL的执行超时
- 课程设计 大爱线性表 线性表头尾处理 (strlen耗时的可怕)
- 分布式消息中间件MQ简单介绍
- 怎么快速添加思维导图软件子主题?
- 欢迎使用CSDN-markdown编辑器
- 史上最强超融合入门干货:超融合与传统架构特性及收益详细对比
- 三角形判断条件
- 用minidwep-gtk研究wifi
- springmvc常用注解标签详解
- Python环境下使用web.py开发