【c++笔试强训】(第十二篇)

目录

数组中的最⻓连续⼦序列(排序+模拟)

题目解析

讲解算法原理

编写代码

字⺟收集(动态规划-路径问题)

题目解析

讲解算法原理

编写代码


数组中的最⻓连续⼦序列(排序+模拟)

题目解析

1.题目链接:数组中的最长连续子序列_牛客题霸_牛客网

2.题目描述

描述

给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)

数据范围: 1 \le n \le 10^51≤n≤105,数组中的值满足 1\le val \le 10^81≤val≤108

要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)

示例1

输入:

[100,4,200,1,3,2]

返回值:

4

示例2

输入:

[1,1,1]

返回值:

1

备注:

1 \leq n \leq 10^51≤n≤105
1 \leq arr_i \leq 10^81≤arri​≤108

讲解算法原理

解法:
算法思路:

排序+模拟
但是要注意处理数字相同的情况!

编写代码

c++算法代码:

class Solution
{
public:int MLS(vector<int>& arr) {sort(arr.begin(), arr.end());int n = arr.size(), ret = 0;for(int i = 0; i < n; ){int j = i + 1, count = 1;while(j < n){if(arr[j] - arr[j - 1] == 1){count++;j++;}else if(arr[j] - arr[j - 1] == 0){j++;}else{break;}}ret = max(ret, count);i = j;}return ret;}
};

java算法代码:

import java.util.*;
public class Solution
{public int MLS (int[] arr) {Arrays.sort(arr);int n = arr.length, ret = 0;for(int i = 0; i < n; ){int j = i + 1, count = 1;while(j < n){if(arr[j] - arr[j - 1] == 1){count++;j++;}else if(arr[j] - arr[j - 1] == 0){j++;}else{break;}}ret = Math.max(ret, count);i = j;}return ret;}
}

 

字⺟收集(动态规划-路径问题)

题目解析

1.题目链接:字母收集_牛客题霸_牛客网

2.题目描述

描述

有一个 n*mn∗m 的矩形方阵,每个格子上面写了一个小写字母。
小红站在矩形的左上角,她每次可以向右或者向下走,走到某个格子上就可以收集这个格子的字母。
小红非常喜欢 "love" 这四个字母。她拿到一个 l 字母可以得 4 分,拿到一个 o 字母可以得 3 分,拿到一个 v 字母可以得 2 分,拿到一个 e 字母可以得 1 分。
她想知道,在最优的选择一条路径的情况下,她最多能获取多少分?

输入描述:

1 \leq n,m \leq 5001≤n,m≤500
接下来的 nn 行 每行一个长度为 mm 的、仅有小写字母构成的字符串,代表矩形方阵。

输出描述:

小红最大可能的得分。

示例1

输入:

3 2
ab
cd
ef

输出:

1

说明:

选择下、下、右)这条路径即可,可以收集到 acef 这四个字母各一次,获得 0+0+1+0=1 分。  

示例2

输入:

2 3
lle
ove

输出:

11

讲解算法原理

解法:
算法思路:

基础的路径问题的dp模型。

编写代码

c++算法代码:

#include <iostream>
using namespace std;
const int N = 510;
char g[N][N];
int dp[N][N];
int m, n;
int main()
{cin >> m >> n;for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){cin >> g[i][j];}}for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){int t = 0;if(g[i][j] == 'l') t = 4;else if(g[i][j] == 'o') t = 3;else if(g[i][j] == 'v') t = 2;else if(g[i][j] == 'e') t = 1;dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + t;}}cout << dp[m][n] << endl;return 0;
}

Java算法代码:

import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main
{public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt(), m = in.nextInt();char[][] arr = new char[n + 1][m + 1];for(int i = 1; i <= n; i++){char[] s = in.next().toCharArray();for(int j = 1; j <= m; j++){arr[i][j] = s[j - 1];}}int[][] dp = new int[n + 1][m + 1];for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){int t = 0;if(arr[i][j] == 'l') t = 4;else if(arr[i][j] == 'o') t = 3;else if(arr[i][j] == 'v') t = 2;else if(arr[i][j] == 'e') t = 1;dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]) + t;}}System.out.println(dp[n][m]);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

多线程——单例模式

目录 前言 一、设计模式 二、饿汉模式 三、懒汉模式 1.单线程版 2.多线程版 结尾 前言 前面的几篇文章中介绍了多线程编程的基础知识&#xff0c;在本篇文章开始&#xff0c;就会利用前面的多线程编程知识来编写一些代码案例&#xff0c;从而使大家可以更好的理解运用多…

关于Web Component

2024年8月14日 引言 Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用&#xff0c;并且可以做到无框架跨框架。 不同于 Vue…

【进阶系列】python的模块

模块 创建一个 .py 文件&#xff0c;这个文件就称之为 一个模块 Module 如何使用 import 想要B.py文件中&#xff0c;使用A.py文件&#xff0c;只需要在B.py文件中使用关键字import导入即可。 import A# 若A是一个包的话&#xff0c;可以这样写 import A.函数名from impor…

全志T113双核异构处理器的使用基于Tina Linux5.0——RTOS编译开发说明

3、RTOS编译开发说明 3.1、RTOS SDK与TinaLinux开发环境 RTOS SDK相关代码已集成到Tina Linux开发环境&#xff0c;Tina Linux开发环境下的rtos子目录即为RTOS开发环境。 ├──brandy ├──bsp ├──build ├──buildroot ├──build.sh >build/top_build.sh ├──…

十六.SpringCloudAlibaba极简入门-整合Grpc代替OpenFeign

前言 他来了他来了&#xff0c;停了快2个月了终于又开始更新文章啦&#xff0c;这次带来的绝对是干货&#xff01;&#xff01;&#xff01;。由于公司项目进行重构的时候考虑到&#xff0c;OpenFeign做为服务通信组件在高并发情况下有一定的性能瓶颈&#xff0c;所以将其替换…

【Linux】环境变量详解

Linux环境变量 1.环境变量分类2.环境变量相关指令3.常用的环境变量4.环境变量的组织方式5.获取环境变量6.命令行参数 1.环境变量分类 按生命周期划分&#xff1a; 永久的&#xff1a;在环境变量脚本文件中配置&#xff0c;用户每次登录时会自动执行这些脚本&#xff0c;相当于永…

SpringBoot项目搭建IEDA2023.1.2

导入依赖 ——————————————————

L0G1000 Linux基础知识(包含ssh报错处理)

1.vscode通过ssh链接云服务器 按教程https://github.com/InternLM/Tutorial/tree/camp4/docs/L0/linux 出现报错&#xff0c;是ssh配置原因 [23:40:18.788] Log Level: 2 [23:40:18.807] SSH Resolver called for “ssh-remotessh.intern-ai.org.cn”, attempt 1 [23:40:18.8…

使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程

当涉及到图数据时&#xff0c;复杂性是不可避免的。无论是社交网络中的庞大互联关系、像 Freebase 这样的知识图谱&#xff0c;还是推荐引擎中海量的数据量&#xff0c;处理如此规模的图数据都充满挑战。 尤其是当目标是生成能够准确捕捉这些关系本质的嵌入表示时&#xff0c;…

测试标题1111

前言 本文是该专栏的第68篇&#xff0c;后面会持续分享python爬虫干货知识&#xff0c;记得关注。 在本专栏之前&#xff0c;笔者有详细介绍京东滑块验证码的解决方法&#xff0c;感兴趣的同学&#xff0c;可以直接翻阅文章《Python如何解决“京东滑块验证码”(5)》进行查看。…

JDK8-17新特性

1.Java8新特性-Lambda表达式 2.1关于Java8新特性简介 Java 8是Java编程语言的一个重大版本更新&#xff0c;于2014年3月发布。它引入了许多新特性和改进&#xff0c;使得Java编程更加方便和高效。 下面是Java 8的主要新特性&#xff1a; Lambda表达式&#xff1a;Lambda表达式…

如何确保Python爬虫程序的稳定性和安全性?

在当今数字化时代&#xff0c;Python爬虫被广泛应用于数据采集和信息抓取。然而&#xff0c;确保爬虫程序的稳定性和安全性是开发过程中的重要考虑因素。本文将探讨如何通过技术手段和最佳实践来提高Python爬虫的稳定性和安全性&#xff0c;并提供代码示例。 稳定性保障 1. 异…

Axure二级菜单下拉交互实例

1.使用boxlabe进行基础布局 2.设置鼠标悬浮和选中状态 3.转换为动态面板 选中所有二级菜单,进行按钮组转换 选中所有二级菜单,进行动态面板转换 4.给用户管理增加显示/隐藏事件 1)选择toggle代表上拉和下拉切换加载 2)勾选Bring to Front,并选择Push/Pull Widgets代表收缩时…

基于智能推荐的图书电商系统的设计与实现

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

JavaScript实现Promise

第一步&#xff1a;编写constructor构造方法 const PENDING pending; const FULFILLED fulfilled; const REJECTED rejected;class MyPromise {#state PENDING;#result undefined;constructor(executor) {const resolve (data) > {this.#changeState(FULFILLED, data…

物理 + 人工智能 = 2024年诺贝尔物理学奖

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一、机器学习与神经网络的发展前景 二、机器学习和神经网络的研究与传统物理学的关系 结…

C++:异常

1. 异常的概念 C语言主要通过错误码的方式处理错误&#xff0c;错误码本质上就是对错误信息进行分类编号&#xff0c;拿到错误码以后还要去查询错误信息&#xff0c;比较麻烦。异常时抛出一个对象&#xff0c;这个对象可以涵盖更全面的信息。 异常处理机制允许程序中独立开发的…

南京邮电大学算法设计-二叉树先序遍历算法动态演示

二叉树先序遍历算法动态演示 一、课题内容和要求 (1)实验目的&#xff1a; 本实验通过手动输入二叉树结点信息&#xff0c;构建相应的二叉树&#xff0c;并通过图形化界面动态演示先序遍历算法的过程。通过本次实验&#xff0c;我可以深入理解二叉树的数据结构、先序遍历算法…

【开源免费】基于Vue和SpringBoot的在线考试系统(附论文)

本文项目编号 T 624 &#xff0c;文末自助获取源码 \color{red}{T624&#xff0c;文末自助获取源码} T624&#xff0c;文末自助获取源码 网络的广泛应用给生活带来了十分的便利。所以把在线考试管理与现在网络相结合&#xff0c;利用java技术建设在线考试系统&#xff0c;实现…

高阶C语言之六:程序环境和预处理

本文介绍程序的环境&#xff0c;在Linux下对编译链接理解&#xff0c;较为简短&#xff0c;着重在于编译的步骤。 C的环境 在ANSI C&#xff08;标准C语言&#xff09;的任何一种实现中&#xff0c;存在两个不同的环境。 翻译环境&#xff1a;在这个环境中&#xff0c;源代码…