HNUST 问题 F: 大爱线性表

2024-08-23 03:38
文章标签 问题 线性表 hnust 大爱

本文主要是介绍HNUST 问题 F: 大爱线性表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

不少参赛同学刚学数据结构,对线性表最是熟悉不过。这里我们给线性表增加两个特殊的操作,第一个是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
解题思路
简单的模拟题,无论如何逆转删除的都是两头的元素,所以不要真正的用数组去暴力模拟,只要标记线性表是正是反以及两头已经删除的元素。
代码
#include <stdio.h>
#include <string.h>
int main()
{int t;scanf("%d", &t);for (int j = 0; j < t; j++){char op[100010];int n, in[100010];scanf("%s%d", op, &n);int op_len = strlen(op);if (n == 0){char no[4];int sign = 0;scanf("%s", no);for (int i = 0; i < op_len; i++){if (op[i] == 'D'){sign = 1;puts("error");break;}}if (sign == 0)printf("[]\n");}else{getchar();if (n == 1)scanf("[%d]", &in[0]);else{scanf("[%d,", &in[0]);for (int i = 1; i < n - 1; i++)scanf("%d,", &in[i]);scanf("%d]", &in[n - 1]);}int order = 0, begain = 0, end = n - 1;int len = n;int Err = 0;for (int i = 0; i < op_len; i++){if (op[i] == 'R')order++;else{if (len == 0){Err = 1;break;}len--;if (order % 2 == 0)begain++;elseend--;}}if (Err)puts("error");else{if (len == 0)printf("[]\n");else{printf("[");if (order % 2 == 0){for (int i = begain; i < end; i++)printf("%d,", in[i]);printf("%d]\n", in[end]);}else{for (int i = end; i > begain; i--)printf("%d,", in[i]);printf("%d]\n", in[begain]);}}}}}return 0;
}


这篇关于HNUST 问题 F: 大爱线性表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098244

相关文章

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Java死锁问题解决方案及示例详解

《Java死锁问题解决方案及示例详解》死锁是指两个或多个线程因争夺资源而相互等待,导致所有线程都无法继续执行的一种状态,本文给大家详细介绍了Java死锁问题解决方案详解及实践样例,需要的朋友可以参考下... 目录1、简述死锁的四个必要条件:2、死锁示例代码3、如何检测死锁?3.1 使用 jstack3.2

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socket read timed out的问题

《如何解决Druid线程池Cause:java.sql.SQLRecoverableException:IO错误:Socketreadtimedout的问题》:本文主要介绍解决Druid线程... 目录异常信息触发场景找到版本发布更新的说明从版本更新信息可以看到该默认逻辑已经去除总结异常信息触发场景复