C++笔试强训day10

目录

1.最长回文字符串

2.买卖股票的最好时机(一)

3.过河卒


1.最长回文字符串

链接

一开始没认真看题目,直到提交了好几遍没过还是没去检查题目,一直检查代码逻辑,哎呦,难受了。

我以为是收尾字母相同就行了。

错误代码:

#include <algorithm>
class Solution {
public:int getLongestPalindrome(string A) {if (A.size() == 1 || A.size() == 0)return A.size();int len = 0;int r = A.size() - 1;for (int i = r; i >= 0; --i) {for (int j = 0; j <= r; ++j) {if (A[i] == A[j]) {int newlen = i - j + 1;len = max(len, newlen);break;}}}return len;}
};

正解:

双指针往该数的两边同时走,然后一直更新len就好了。

核心代码:

        for (int i = 1; i < A.size(); ++i) {l = i - 1;r = i + 1;while (l >= 0 && r < n) {if (A[l] == A[r]) {l--;r++;}else {break;}}len = max(len, r - l - 1);

细节:不确定是不是两数连一起相同,比如ababa 和 abaabc。

如果只用上述核心代码的话,就不能准确的计算出abaabc的长度了,因为他只是比他的前后。

要添加一个本身也计算的核心

        for (int i = 1; i < A.size(); ++i) {l = i - 1;r = i + 1;while (l >= 0 && r < n) {if (A[l] == A[r]) {l--;r++;}else {break;}}len = max(len, r - l - 1);l = i - 1;r = i;while (l >= 0 && r < n) {if (A[l] == A[r]) {l--;r++;}else {break;}}len = max(len, r - l - 1);

这样就能保证另一种也能过。

详细代码:

class Solution {
public:int getLongestPalindrome(string A) {int n = A.size();if (n < 2) {return n;}int len = 0;int l, r;for (int i = 1; i < A.size(); ++i) {l = i - 1;r = i + 1;while (l >= 0 && r < n) {if (A[l] == A[r]) {l--;r++;}else {break;}}len = max(len, r - l - 1);l = i - 1;r = i;while (l >= 0 && r < n) {if (A[l] == A[r]) {l--;r++;}else {break;}}len = max(len, r - l - 1);}return len;}
};

2.买卖股票的最好时机(一)

链接

我的一开始的解法是用队列存储一个pair<int, int>一个存值,一个存下标。

然后暴力枚举每个组合,最后肯定是超时了。

正解就是一边遍历数组,一边更新下标 i 之前的最小值Min,同时更新总值sum。

详细代码:

#include <iostream>
#include <vector>
using namespace std;int sum = 0;int main() {int n;cin >> n;vector<int> v(n);for (int i = 0; i < n; ++i){cin >> v[i];}int Min = v[0];for (int i = 1; i < n; ++i){if (v[i] - Min > sum){sum = v[i] - Min;}Min = min(Min, v[i]);}cout << sum << endl;return 0;
}

3.过河卒

链接

一道线性加约束条件dp问题。

细节:x1 != x,y2 != y,dp数组的初始化

处理好这些细节之后,解题就不容易出错。

详细代码:(我这里是将所有坐标挪动了1位,即起点在1,1;所以马的位置x,y也都要+=上一个数字1

#include <iostream>
using namespace std;int n, m, x, y; 
long long dp[30][30];
int main() 
{cin >> n >> m >> x >> y;x++, y++;dp[0][1] = 1;for(int i = 1; i <= n + 1; i++){for(int j = 1; j <= m + 1; j++){if(i != x && j != y && ((abs(i - x) + abs(j - y)) == 3) || (i == x && j == y))dp[i][j] = 0;elsedp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}cout << dp[n + 1][m + 1] << endl;
}

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

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

相关文章

为什么二维数组初始化第一维数组长度可以为空,第二维不可以为空呢?

注意&#xff0c;数组第二维的长度声明永远不能省略。这是因为C语言中的二维数组元素在c编译程序为其分配的连续存储空间中是按行存放的&#xff0c;即存在完整第一行后存第二行&#xff0c;然后再第三行&#xff0c;以此类推。存放时系统必须知道每一行有多少个元素才能正确计…

一文讲解Android车载系统camera架构 - EVS

Android的camera开发中&#xff0c;使用最多的是camera2 以及现在Google主推的cameraX 架构&#xff0c;而这两个架构主要针对的是手机移动端上camera的流程。 而今天介绍的EVS(Exterior View System)架构是不同于camera2上的手机架构&#xff0c;针对Automotive的版本&#x…

软文伪原创工具有哪些,推荐3款强大的软文伪原创工具

软文作为一种重要的营销和传播手段&#xff0c;受到了越来越多的关注。而随着科技的不断发展&#xff0c;各种软文生产的工具相续出现&#xff0c;如&#xff1a;软文伪原创工具&#xff0c;它能为人们提供便捷、高效的文章生产方式&#xff0c;也及可以节省文章写作的时间与精…

车载系统的 加减串器应用示意

overview 车载系统上使用加减串器来实现camera&#xff0c; led液晶显示屏等 图像数据的远距离传输&#xff0c;将原先在短距离传输视频信号的mipi csi&#xff0c;dsi 等的TX&#xff0c;RX中间&#xff0c;插入加减串器&#xff0c;实现长距离的可靠传输。 示意图如下 往往…

Vue从入门到精通-01-Vue的介绍和vue-cli

MVVM模式 Model&#xff1a;负责数据存储 View&#xff1a;负责页面展示 View Model&#xff1a;负责业务逻辑处理&#xff08;比如Ajax请求等&#xff09;&#xff0c;对数据进行加工后交给视图展示 关于框架 为什么要学习流行框架 1、企业为了提高开发效率&#xff1a;…

图像处理:乘法滤波器(Multiplying Filter)和逆FFT位移

一、乘法滤波器&#xff08;Multiplying Filter&#xff09; 乘法滤波器是一种以像素值为权重的滤波器&#xff0c;它通过将滤波器的权重与图像的像素值相乘&#xff0c;来获得滤波后的像素值。具体地&#xff0c;假设乘法滤波器的权重为h(i,j)&#xff0c;图像的像素值为f(m,…

Cranck-Nicolson隐式方法解线性双曲型方程

Cranck-Nicolson隐式方法解线性双曲型方程 Cranck-Nicolson方法在抛物型方程里面比较常用&#xff0c;双曲型方程例子不多&#xff0c;该方法是二阶精度&#xff0c;无条件稳定&#xff0c;然而&#xff0c;数值震荡比较明显&#xff0c;特别是时间演化比较大以及courant数比较…

网工内推 | 云计算运维,厂商云相关认证优先,股票期权,全勤奖

01 国科科技 招聘岗位&#xff1a;云计算运维 职责描述&#xff1a; 1、负责私有云平台的运维管理工作,包括云平台日常运维、故障处理、扩容、版本升级、优化和维护等。 2、根据业务需求,从技术角度支持及配合各业务系统上云工作。 3、为云上业务系统提供云产品、云服务方面的…

python ERA5 画水汽通量散度图地图:风速风向矢量图、叠加等高线、色彩分级、添加shp文件、添加位置点及备注

动机 有个同事吧&#xff0c;写论文&#xff0c;让我帮忙出个图&#xff0c;就写了个代码&#xff0c;然后我的博客好久没更新了&#xff0c;就顺便贴上来了&#xff01; 很多人感兴趣风速的箭头怎样画&#xff0c;可能这种图使用 NCL 非常容易&#xff0c;很多没用过代码的小…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作&#xff0c; commit&#xff1a;命令用于将你的代码变更保存到本地代码仓库中&#xff0c;它创建了一个新的提交&#xff08;commit…

idea的插件,反编译整个jar包

idea的插件&#xff0c;反编译整个jar包 1.安装插件1.1找到插件1.2 搜索插件 2.反编译整个jar包2.1 复制jar包到工件目录下&#xff1a;2.2 选中jar包&#xff0c;点出右键 3.不用插件&#xff0c;手动查看某一个java类3.1 选中jar包&#xff0c;点出右键 1.安装插件 1.1找到插…

Linux网络编程---Socket编程

一、网络套接字 一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现。) 在通信过程中&#xff0c;套接字一定是成对出现的 套接字通讯原理示意图&#xff1a; 二、预备知识 1. 网络字节序 内存中的多字节数据相对于内存地址有大端和小端之分 小端法&…

同事上班这样摸鱼,我坐边上咋看他都在专心写代码啊

我边上有个同事&#xff0c;我坐他边上&#xff0c;但是每天看着他都眉头紧锁&#xff0c;忙的不亦乐乎&#xff0c;但终于有一天&#xff0c;我发现了他上班摸鱼的秘诀。 我劝你千万不要学会这4招&#xff0c;要不就该不好好上班了。 目录 1 上班看电影&#xff1f; 2 上班…

自建SQL server 服务无法启动,提示评估期已过

问题背景 在服务器内安装的SQL server无法启动&#xff0c;报错提示如下截图&#xff0c;提示错误代码17051&#xff1a; 结合系统日志查看应用程序日志详情提示评估期已过&#xff0c;报错如下 问题原因 出现此报错原因是SQL server 安装时&#xff0c;使用的评估版本&#xf…

网络安全的防护措施有哪些?

1. 安全策略和合规性 2. 物理和网络安全 3. 数据加密 4. 软件和系统更新 5. 访问控制 6. 威胁监测和响应 7. 员工培训和安全意识 8. 备份和灾难恢复 零基础入门学习路线 视频配套资料&国内外网安书籍、文档 网络安全面试题 网络安全的防护措施多种多样&#xff0c…

基于Spring Boot的商务安全邮件收发系统设计与实现

基于Spring Boot的商务安全邮件收发系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 已发送效果图&#xff0c;用户可以对已发送信息…

【GitHub】2FA认证(双重身份验证)

GitHub 2FA认证&#xff08;双重身份验证&#xff09; 写在最前面一、使用 TOTP 应用程序配置双2FA&#xff08;双因素身份验证&#xff09;1. 介绍2. github3. 认证 官网介绍小结 & 补充 &#xff1a;权限不足or验证码错误问题 &#x1f308;你好呀&#xff01;我是 是Yu欸…

张大哥笔记:普通人可以靠知识付费赚到钱吗?

大家好&#xff0c;我是张大哥&#xff0c;今天给大家聊聊普通人怎么做知识付费赚钱这个话题&#xff0c;首先科普一下&#xff0c;什么是知识付费&#xff1f;把知识变成产品或服务&#xff0c;以实现商业价值的行为就是知识付费&#xff01; 做知识付费类的项目&#xff0c;首…

MySQL数据库基础(数据库的基本操作、常用的数据类型、表的相关操作)

前言 今天我们将介绍数据库的基本操作、常用的数据类型、表的相关操作 一、数据库的基本操作 1.1 显示当前的数据库 操作代码 show databases;1.2 创建数据库 基本语法&#xff1a; 1. //创建数据库 create database examble;2. create database if not exists exist exa…

CentOS命令大全:掌握关键命令及其精妙用法!

CentOS是一种流行的开源企业级Linux发行版&#xff0c;它基于Red Hat Enterprise Linux (RHEL)的源代码构建。对于系统管理员和运维工程师来说&#xff0c;掌握CentOS的常用命令至关重要。 这些命令不仅可以帮助管理服务器&#xff0c;还可以进行故障排查、性能监控和安全加固等…