【C++】 —— 笔试刷题day_21

一、爱丽丝的人偶

题目解析

在这里插入图片描述

现在存在n个玩偶,每个玩偶的身高是1、2、3......n

现在我们要对这些玩偶进行排序(如果x人偶,它左右两边的玩偶一个比x高、一个比x矮,那这个玩偶就会爆炸)。

我们不想要任何一个人偶爆炸,题目输入一个n,让我们返回满足条件的排列。

算法思路

这道题,可以说比较简单了,我们要让i人偶比i-1i+1位置的人偶高或者低;

我们可以这样去排列:1, n , 2 , n-1 , 3 , n-2......

这样我们可以发现,任何一个位置,它都是比左右两个人偶高或者低的;

那这道题我们就可以从1n开始放置人偶,所以只需要定义两个变量分别从1n开始向中间遍历。

**这里有一个要注意的点:**当我们放置完l人偶后,l是可能等于r

如果我们不做判断,那就可能放置两个身高一样的人偶:1 3 2 2

所以我们要进行判断,如果放置完l的人偶后,让l++,再判断l是否小于等于r:(如果l<=r就放置r,否则就不放置)。

这里我们也没有必要将数据存储起来,直接输出即可。

代码实现

#include<iostream>
using namespace std;
int main()
{int n;cin>>n;int l = 1,r = n;while(l<=r){cout<<l<<' ';l++;if(l<=r){cout<<r<<' ';r--;}}cout<<endl;return 0;
}

二、集合

题目解析

在这里插入图片描述

题目给定两个集合(数组)AB,让我们求出AB的交集(A+B);

输出时要求按照升序输出。

算法思路

对于这道题,就类似于归并排序中,合并两个数组的操作,但是这道题目求的是交集,也就是最后结果中不能存在相同的元素。

思路一:排序+合并数组

对于AB,题目并没有说这两个数组是有序的,那我们要进行和并数组操作就要先对AB进行排序;

排完序之后,我们使用lr分别遍历两个数组(注意:要求升序且不能存在重读元素

如果l位置元素等于r位置元素就先加入到结果数组中,让r++(或者l++);

如果l位置元素大于r位置元素,就将r位置元素加入到结果数组中;

如果l位置元素小于r位置元素,就将l位置元素加入到结果数组中。

最后遍历结束之后,lr可能没有遍历完,所以要将A或者B中剩余的元素加入到结果数组中。

思路二:set去重+排序

对于这种思路就有一点投机取巧了:

set中是不允许出现重复元素的,并且set底层是红黑树,是一个平衡搜索二叉树;使用迭代器遍历是有序的。
在这里插入图片描述

代码实现

#include <iostream>
#include <set>
using namespace std;int main() {int n, m;cin >> n >> m;//set去重+排序set<int> ret;int x;for (int i = 0; i < n; i++) {cin >> x;ret.insert(x);}for (int i = 0; i < m; i++) {cin >> x;ret.insert(x);}for (auto& e : ret) {cout << e << ' ';}cout << endl;
}

三、最长回文子序列

题目解析

在这里插入图片描述

题目给定一个字符串str,然后让我们在这个字符串中找到最长的回文子序列,然后输出它的长度。

算法思路

对于这道题,初看可能没什么思路

这里我们可以选取不连续的元素构成子序列,那这如何去找啊?

先说整道题用什么方法去解决:动态规划

要使用动态规划去解决这道问题,那我们就要搞清楚状态表示和状态转移方程

状态表示: dp[i][j]表示区间[i,j]内最长的回文子序列的长度

**状态转移方程:**对于状态转移方程,这里就要好好的分析一下了:

dp[i][j]表示的是区间[i,j]内最长的回文子序列的长度,但是可能i>j或者i == j或者i<j

  • i > j:这种情况肯定是不存在区间[i,j]的,那此时dp[i][j] = 0

  • i == j:这种情况,区间[i,j]只有一个元素,那此时这一个元素它可以构成一个回文子序列;所有dp[i][j] = 1

  • i < j:这种情况,区间[i,j]内是大于等于2个元素的;这时候我们就要看i位置和j位置是否相等了。

    如果str[i] == str[j],区间[i,j]中最长回文子序列的长度就等于[i+1,j-1]中最长回文子序列的长度再加上2

    如果str[i] == str[j],我们不能直接去找区间[i+1,j-1]内的最长回文子序列 ,因为i+1位置的元素和j位置的元素、i位置的元素和j-1位置的元素是可能相等的;所以我们要找的就是区间[i+1,j]和区间[i,j-1]中最长回文子序列长度的最大值。

填表顺序: 这里我们填dp[i][j]时用到了dp[i][j-1]dp[i+1,j]dp[i+1,j-1];那我们填表的顺序:从下到上,每一行从左到右。

**初始化:**我们在填第n-1行要用到第n行的数据、填写第1列时要用到第0列的数据,所以我们要初始化第n行和第0列。

**返回:**我们最后要的结果在dp[0][n-1]里存着(区间[0,n-1]内最长回文子序列的长度),最后输出dp[0][n-1]即可。

在这里插入图片描述

代码实现

#include <iostream>
using namespace std;
const int N = 1001;
int dp[N][N] = {0};
int main() {string str;cin>>str;for(int i = str.size()-1;i>=0;i--){for(int j = 0;j<str.size();j++){if(i>j)dp[i][j] = 0;else if(i == j)dp[i][j] = 1;else {if(str[i] == str[j])dp[i][j] = dp[i+1][j-1]+2;elsedp[i][j] = max(dp[i+1][j],dp[i][j-1]);}}}cout<<dp[0][str.size()-1]<<endl;return 0;
}

到这里本篇文章内容就结束了
感谢各位的支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解.vscode 下的json .vscode文件夹下各个文件的作用

1.背景 看一些开源项目的时候,总是看到vscode先有不同的json文件,再次做一下总结方便之后查看 settings.json肯定不用多说了 vscode 编辑器分为 全局用户配置 和 当前工作区配置 那么.vscode文件夹下的settings.json文件夹肯定就是当前工作区配置了 在此文件对单个的项目进行配…

手动实现legend 与 echarts图交互 通过js事件实现图标某项的高亮 显示与隐藏

通过html实现legend的样式 提供调用echarts的api实现与echarts图表交互的效果 实现饼图element实现类似于legend与echartstu表交互效果 效果图 配置代码 <template><div style"height: 400px; width: 500px;background-color: #CCC;"><v-chart:opti…

Spring Boot 配置源详解(完整版)

Spring Boot 配置源详解&#xff08;完整版&#xff09; 一、配置源加载顺序与优先级 配置源类型优先级顺序&#xff08;从高到低&#xff09;对应配置类/接口是否可覆盖典型文件/来源命令行参数&#xff08;--keyvalue&#xff09;1&#xff08;最高&#xff09;SimpleComman…

【无人机】无人机遥控器设置与校准,飞行模式的选择,无线电控制 (RC) 设置

目录 1、遥控器校准 1.1、校准步骤 2、飞行模式选择&#xff0c;遥控器通道映射 2.1、配置步骤 1、遥控器校准 在校准无线电系统之前&#xff0c;必须连接/绑定接收器和发射器。绑定发射器和接收器对的过程是特定于硬件的&#xff08;有关说明&#xff0c;请参阅 RC 手册&…

Redis 有序集合 ZSet 深度解析教程

Redis-ZSet 引言一、 ZSet 核心概念与特性1.1 什么是 ZSet&#xff1f;1.2 ZSet 与 Set、List 的本质区别 二、 ZSet 典型应用场景2.1 排行榜 (Leaderboards)2.2 带权重的任务队列 / 延迟队列2.3 时间轴 (Timeline)2.4 范围查找 三、 ZSet 底层实现3.1 ziplist (压缩列表)3.2 s…

【SpringBoot】HttpServletRequest获取使用及失效问题(包含@Async异步执行方案)

目录 1. 在 Controller 方法中作为参数注入 2.使用 RequestContextHolder &#xff08;1&#xff09;失效问题 &#xff08;2&#xff09;解决方案一&#xff1a; &#xff08;3&#xff09;解决方案二&#xff1a; 3、使用AutoWrite自动注入HttpServletRequest 跨线程调…

mfc学习(一)

mfc为微软创建的一个类qt框架的客户端程序&#xff0c;只不过因为微软目前有自己 的亲身儿子C#&#xff08;.net&#xff09;,所以到2010没有进行维护。然后一些的工业企业还在继续进行维护相关的内容。我目前就接手一个现在这样的项目&#xff0c;其实本质与qt的思路是差不多的…

HarmonyOS:一多能力介绍:一次开发,多端部署

概述 如果一个应用需要在多个设备上提供同样的内容&#xff0c;则需要适配不同的屏幕尺寸和硬件&#xff0c;开发成本较高。HarmonyOS 系统面向多终端提供了“一次开发&#xff0c;多端部署”&#xff08;后文中简称为“一多”&#xff09;的能力&#xff0c;可以基于一种设计…

秒出PPT推出更强版本,AI PPT工具进入新纪元!

在现代职场中&#xff0c;PPT是我们沟通和展示信息的重要工具。无论是做产品演示&#xff0c;还是准备工作汇报&#xff0c;一份精美的PPT能大大提升演示效果。然而&#xff0c;传统的PPT制作往往需要消耗大量时间&#xff0c;尤其是在排版、设计和内容调整上。如今&#xff0c…

Godot开发2D冒险游戏——第二节:主角光环整起来!

变量的作用域 全局变量&#xff0c;局部变量&#xff0c;导出变量&#xff08;可以在检查器当中快速查看&#xff09; 为玩家添加移动动画 现在游戏的玩家还只是在滑行&#xff0c;我们需要再添加玩家每个方向上的移动效果 删除原先的Item节点&#xff0c;创建一个动画精灵…

颠覆传统NAS体验:耘想WinNAS让远程存储如同本地般便捷

在当今数据爆炸的时代&#xff0c;网络附加存储(NAS)已成为许多企业和个人用户的必备设备。然而&#xff0c;传统硬件NAS解决方案存在诸多限制&#xff0c;如高额成本、复杂设置和有限的远程访问能力。耘想WinNAS以其创新的软件解决方案&#xff0c;彻底改变了这一局面&#xf…

新市场环境下新能源汽车电流传感技术发展前瞻

新能源革命重构产业格局 在全球碳中和战略驱动下&#xff0c;新能源汽车产业正经历结构性变革。国际清洁交通委员会&#xff08;ICCT&#xff09;最新报告显示&#xff0c;2023年全球新能源汽车渗透率突破18%&#xff0c;中国市场以42%的市占率持续领跑。这种产业变革正沿着&q…

STM32之DHT11温湿度传感器---附代码

DHT11简介 DHT11的供电电压为 3&#xff0d;5.5V。 传感器上电后&#xff0c;要等待 1s 以越过不稳定状态在此期间无需发送任何指令。 电源引脚&#xff08;VDD&#xff0c;GND&#xff09;之间可增加一个100nF 的电容&#xff0c;用以去耦滤波。 DATA 用于微处理器与DHT11之间…

#define STEUER_A_H {PWM_A_ON}

目录 一、括号的区别 二、实例讲解 三、注意事项 四、总结 五、补充 一、括号的区别 大括号 {}: 在 C/C 中&#xff0c;大括号一般用于表示一个代码块或结构体、集合等。例如&#xff1a; 用于定义函数体、控制结构&#xff08;如 if、for&#xff09;的代码块。用于初始化…

Redis 缓存—处理高并发问题

Redis的布隆过滤器、单线程架构、双写一致性、比较穿透、击穿及雪崩、缓存更新方案及分布式锁。 1 布隆过滤器 是一种高效的概率型数据结构&#xff0c;用于判断元素是否存在。主要用于防止缓存穿透&#xff0c;通过拦截不存在的数据查询&#xff0c;避免击穿数据库。 原理&…

【玩转全栈】—— 无敌前端究极动态组件库--Inspira UI

目录 Inspira UI 介绍 配置环境 使用示例 效果&#xff1a; Inspira UI 学习视频&#xff1a; 华丽优雅 | Inspira UI快速上手_哔哩哔哩_bilibili 官网&#xff1a;https://inspira-ui.com/ Inspira UI 介绍 Inspira UI 是一个设计精美、功能丰富的用户界面库&#xff0c;专为…

【OpenCV图像处理实战】从基础操作到工业级应用

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;6个案例&#xff09;案例1&#xff1a;图像基本操作案例2&#xff1a;边缘检测案例3&…

fastjson使用parseObject转换成JSONObject出现将字符特殊字符解析解决

现象&#xff1a;将字符串的${TARGET_VALUE}转换成NULL字符串了问题代码&#xff1a; import com.alibaba.fastjson.JSON;JSONObject config JSON.parseObject(o.toString()); 解决方法&#xff1a; 1.更换fastjson版本 import com.alibaba.fastjson2.JSON;或者使用其他JS…

Docker Compose 和 Kubernetes(k8s)区别

前言&#xff1a;Docker Compose 和 Kubernetes&#xff08;k8s&#xff09;是容器化技术中两个常用的工具&#xff0c;但它们的定位、功能和适用场景有显著区别。以下是两者的核心对比&#xff1a; ​​1. 定位与目标​​ ​​特性​​ ​​Docker Compose​​ ​​Kubernet…

【21天学习打卡挑战赛】如何学习WEB安全:逼自己在短时间掌握WEB安全核心内容

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…