C++笔试强训day33

目录

1.跳台阶扩展问题

2.包含不超过两种字符的最长子串

3.字符串的排列


1.跳台阶扩展问题

链接icon-default.png?t=N7T8https://www.nowcoder.com/practice/953b74ca5c4d44bb91f39ac4ddea0fee?tpId=230&tqId=39750&ru=/exam/oj

我是用动态规划解决的:

#include <iostream>
using namespace std;
int dp[30];
int main() {
	int n;
	cin >> n;
	dp[1] = 1;
	for (int i = 2; i <= n; ++i)
	{
		for (int j = 1; j <= i - 1; j++)
		{
			dp[i] += dp[i - j];
		}
		dp[i] += 1;
	}
	cout << dp[n] << endl;
	return 0;
}

其实这是一道规律题:

#include <iostream>
using namespace std;
int main()
{
	int n;
	cin >> n;
	cout << (1 << (n - 1)) << endl;
	return 0;
}

2.包含不超过两种字符的最长子串

链接icon-default.png?t=N7T8https://www.nowcoder.com/practice/90d6a362fa7d4c519d557da797bb02ce?tpId=196&tqId=40552&ru=/exam/oj

一道滑动窗口问题,难点是分析清楚进窗口和出窗口的条件:

若一个数从0 - > 1,那么则cnt++(cnt是窗口中字母的种类),若从1 - > 0,那么则cnt--。

当cnt > 2时,就得出窗口了。

然后就是找个合适的位置更新返回值。

#include <iostream>
#include <iterator>
using namespace std;

int a[26];
int main() {
    string s;
    cin >> s;

    int cnt = 0, ret = 0;
    int l = 0, r = 0, n = s.size();
    while(r < n)
    {
        if(a[s[r] - 'a']++ == 0)
            cnt++;

        while(cnt > 2)
            if(a[s[l++] - 'a']-- == 1)
                cnt--;

        ret = max(ret, r - l + 1);
        r++;
    }
    cout << ret << endl;
    return 0;
}

3.字符串的排列

链接icon-default.png?t=N7T8https://www.nowcoder.com/practice/fe6b651b66ae47d7acce78ffdd9a96c7?tpId=13&tqId=11180&ru=/exam/oj

深度优先遍历问题(DFS):

首先需要排序,因为排完序之后可以更好的分析有两个一样的字符的情况。

当两字符一样时,就无需在递归一遍了,因为结果都是一样的。

class Solution {
public:
    int n;
    string s;
    string tmp;
    bool vis[11] = { false };
    vector<string> ret;

    void DFS(int pos)
    {
        if (pos == n)
        {
            ret.push_back(tmp);
            return;
        }

        for (int i = 0; i < n; ++i)
        {
            if (!vis[i])
            {
                if (i - 1 >= 0 && s[i] == s[i - 1] && !vis[i - 1])
                    continue;// 剪枝

                tmp.push_back(s[i]);
                vis[i] = true;

                // 递归
                DFS(pos + 1);

                // 回溯
                tmp.pop_back();
                vis[i] = false;
            }
        }
    }

    vector<string> Permutation(string str) {
        s = str;
        n = str.size();
        sort(s.begin(), s.end());

        DFS(0);
        return ret;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂:http免费升级https

背景&#xff1a; 随着现在全民网络安全意识的日益提升&#xff0c;各个网站需要实现的https数量也随之提升&#xff0c;那么如何将原本网站的http访问方式升级为https呢&#xff1f; 该内容为如何免费将网站的http访问升级为https访问 论https的加密逻辑&#xff1a; 步骤 …

【数据结构(邓俊辉)学习笔记】图01——图的表示与实现

文章目录 1. 概述1.1 邻接 关联1.2 无向 有向1.3 路径 环路 2. 邻接矩阵2.1 接口2.2 邻接矩阵 关联矩阵2.3 实例2.4 顶点和边2.5 邻接矩阵2.6 顶点静态操作2.7 边操作2.7 顶点动态操作2.8 综合评价 1. 概述 1.1 邻接 关联 相对于此前的线性以及半线性结构&#xff0c;图…

RAG概述(二):Advanced RAG 高级RAG

目录 概述 Advanced RAG Pre-Retrieval预检索 优化索引 增强数据粒度 粗粒度 细粒度 展开说说 优化索引 Chunk策略 Small2Big方法 元数据 引入假设性问题 对齐优化 混合检索 查询优化 查询扩展 查询转换 Post-Retrieval后检索 参考 概述 Native RAG&#…

Python并发编程学习记录

1、初识并发编程 1.1、串行&#xff0c;并行&#xff0c;并发 串行(serial)&#xff1a;一个cpu上按顺序完成多个任务&#xff1b; 并行(parallelism)&#xff1a;任务数小于或等于cup核数&#xff0c;多个任务是同时执行的&#xff1b; 并发(concurrency)&#xff1a;一个…

Linux之Nginx

1、Nginx 1.1、什么是Nginx Nginx最初由Igor Sysoev开发&#xff0c;最早在2004年公开发布。它被设计为一个轻量级、高性能的服务器&#xff0c;能够处理大量并发连接而不消耗过多的系统资源。Nginx的架构采用了事件驱动的方式&#xff0c;能够高效地处理请求。它的模块化设计使…

Redis 的持久化(真的好细)

前言 Redis 是一个内存数据库&#xff0c;把数据存储在内存中&#xff0c;而内存中的数据是不持久的&#xff0c;要想数据持久就得将数据存储到硬盘中&#xff0c;而 Redis 相比于 Mysql 这样的关系型数据库最大的优势就在于将数据存储在内存中从而效率更高&#xff0c;速度更快…

大数据智慧消防解决方案(24页PPT)

方案介绍&#xff1a; 大数据智慧消防解决方案是提升消防安全管理水平、保障人民群众生命财产安全的重要手段。通过集成物联网、云计算、大数据、人工智能等先进技术&#xff0c;构建集监测、预警、指挥、救援于一体的智慧消防系统&#xff0c;将为消防安全事业注入新的活力。…

单日收益1000+看了就会的项目,最新灵异短视频项目,简单好上手可放大操作

各位好友&#xff0c;佳哥在此与大伙儿聊聊一项神秘莫测的短视频项目。你或许会想&#xff0c;“又是一个视频创作项目&#xff1f;” 但别急&#xff0c;这个项目与众不同&#xff0c;日入千元不再是梦&#xff0c;而且它的易用性让人惊喜&#xff0c;无论你是初学者还是资深玩…

数据结构·一篇搞定队列!

hello&#xff0c;大家好啊&#xff0c;肖恩又拖更了&#xff0c;你们听我狡辩&#xff0c;前段时间有期中考试&#xff0c;so我就没什么时间写这个&#xff0c;在这给大家道个歉&#x1f62d;&#x1f62d;&#x1f62d; 我后面一定尽力不拖更 那么接下来&#xff0c;我们来看…

数字化转型必备:营销策划流程图,打造你的数字市场地图

制作营销策划流程图是一个系统化的过程&#xff0c;它可以帮助你清晰地规划和展示营销活动的各个阶段。 以下是制作营销策划流程图的步骤&#xff1a; 1.确定营销目标&#xff1a; 明确你的营销活动旨在实现的具体目标&#xff0c;比如提升品牌知名度、增加销售额、吸引新客…

【CCIE | 网络模拟器】部署 EVE-NG

目录 1. 环境准备2. 下载 EVE-NG 镜像3. 安装 EVE-NG 虚拟机3.1 创建 eve-ng 虚拟机3.2 选择存储3.3 定义虚拟机计算资源&#xff08;1&#xff09;开启CPU虚拟化功能&#xff08;2&#xff09;精简置备磁盘 3.4 检查虚拟机设置 4. 安装系统4.1 选择系统语言4.2 选择系统键盘类…

2024.05.25 第 131 场双周赛

Leetcode 第 131 场双周赛 求出出现两次数字的 XOR 值 [Leetcode 求出出现两次数字的 XOR 值](https://leetcode.cn/problems/find-the-xor-of-numbers-which-appear-twice/description/] 给你一个数组 nums &#xff0c;数组中的数字 要么 出现一次&#xff0c;要么 出现两次…

自从有了可观测性,传统运维如何进行提升?

在 201x 年&#xff0c;随着容器技术的出现&#xff0c;容器的部署方式逐渐被各大互联网公司采用&#xff0c;相比物理机/虚拟机&#xff0c;容器的好处是环境隔离、轻量、快速。 但是管理容器是一件复杂的事情&#xff0c;后来出现了 Kubernetes&#xff0c;成为了事实上的容…

数据结构(五)树与二叉树

2024年5月26日一稿(王道P142) 基本概念 术语 性质 二叉树 5.2.2 二叉树存储结构

MySQL|主从复制配置

我使用的是两个云服务器&#xff0c;如果读者使用的是虚拟机和本机&#xff0c;配置会简单很多。 关于云服务器安全组设置、防火墙端口等问题请参考文章&#xff1a; 使用华为云服务器进行项目部署&#xff08;云服务器、防火墙配置&#xff09; 条件&#xff1a;master 和 s…

网络安全之安全协议浅谈

安全协议 安全协议概述安全协议分类IPSecIPSec安全协议IPSec架构IPSec封装模式AH协议ESP协议SET协议SET协议电子交易模型SET协议安全目标认证中心CA 安全协议概述 安全协议是信息交换安全的核心&#xff0c;它在网络不同层次上、针对不同应用&#xff0c;通过对各种密码学技术…

006、API_单线程

Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库 服务&#xff0c;本节首先通过多个客户端命令调用的例子说明Redis单线程命令处理 机制&#xff0c;接着分析Redis单线程模型为什么性能如此之高&#xff0c;最终给出为什么理 解单线程模型是使用和运维Redis的…

面向对象------多态

1.多态的定义 通俗来说&#xff0c;当同一种行为或者事情发生在不同的对象上&#xff0c;这些行为或者事情最终得到的结果不同。 注意&#xff1a;多态要发生在继承的基础上。 例如&#xff1a;彩色打印机和黑白打印机。 彩色打印机和黑白打印机是不同的对象&#xff0c;但…

微信小程序源码-基于Java后端的小区租拼车管理信息系统毕业设计(附源码+演示录像+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设…

跟TED演讲学英文:How to escape education‘s death valley by Sir Ken Robinson

How to escape education’s death valley Link: https://www.ted.com/talks/sir_ken_robinson_how_to_escape_education_s_death_valley Speaker: Sir Ken Robinson Date: April 2013 文章目录 How to escape educations death valleyIntroductionVocabularySummaryTranscri…