【笔试强训】day10

1.最长回文子串

思路:

常规思路就是dp。dp[i][j]表示字符串i-j是否是回文子串。

如果A[i]==A[j],考虑以下几种情况:

长度小于3,说明一定是回文。

要想让dp[i][j]为真,则dp[i+1][j-1]必须也为真。否则就是false.即dp[i][j]=dp[i+1][j-1]

顺便用一个ans维护一下答案就好了

这种做法的复杂度是N^2.还有一种叫马拉夫的做法,On的复杂度,但是我忘了,草。

代码:

#define _CRT_SECURE_NO_WARNINGS 1
class Solution {
public:

    int getLongestPalindrome(string A) {
        int n = A.size();
        vector<vector<bool>> dp(n + 1, vector<bool>(n + 1));
        if (A.size() == 1)return 1;

        for (int i = 1; i <= n; i++) {
            dp[i][i] = true;
        }
        int ans = 1;
        for (int len = 1; len <= n; len++) {
            for (int l = 1; l + len - 1 <= n; l++) {
                int r = l + len - 1;
                if (len == 1)continue;
                if (A[l - 1] != A[r - 1]) {
                    dp[l][r] = false;
                }
                else {
                    if (len <= 3)dp[l][r] = true;
                    else dp[l][r] = dp[l + 1][r - 1];
                }

                if (dp[l][r])ans = max(ans, r - l + 1);
            }
        }
        return ans;

    }
};

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

思路:

暴力枚举。假设我们在第i天买入,那么在什么时候卖掉最合适呢?在第i天之后哪一天的票价最高我们就在哪一天卖掉。所以我们可以再用一个数组s[],s[i]表示i-n天的最高票价

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N];
int s[N];
int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    s[n] = a[n];
    for (int i = n - 1; i >= 1; i--) {
        s[i] = max(s[i + 1], a[i]);
    }

    int ans = 0;
    for (int i = 1; i < n; i++) {
        ans = max(ans, s[i + 1] - a[i]);
    }
    cout << ans;

    return 0;
}

3.过河卒

思路:

一眼看上去dfs,做了一遍直接超时了(优化一下应该就能过)。后来换了种思路,借用类似杨辉三角的做法。

dp[i][j]表示,从起点到(i,j)的路径有多少。如果没有马的干扰,那么dp[i][j]=dp[i-1][j]+dp[i][j-1]

首先如果i,j本身就是马的范围,那么直接滚,表示走到这个点的路径数0。

换而言之,就是遇到马步直接跳过。

代码:


#include <iostream>
#include<queue>
#include<algorithm>
using namespace std;
const int N = 50;
long long f[N][N];
bool st[N][N];
int n, m, x, y;
int dx[] = { 0, -2, -1, 1, 2, 2, 1, -1, -2 };
int dy[] = { 0, 1, 2, 2, 1, -1, -2, -2, -1 };

bool check(int a, int b) {
    if (x == a && y == b)return false;
    if (abs(a - x) + abs(b - y) == 3) {
        return false;
    }
    // cout<<abs(a - x) + abs(b - y) <<"--"<<endl;
    return true;
}
int main() {
    int n, m, x, y;
    cin >> n >> m >> x >> y;
    if (n == x && m == y) {
        cout << 0 << endl;
        return 0;
    }

    for (int i = 0; i < 9; i++) {
        int a = x + dx[i];
        int b = y + dy[i];
        if (a >= 0 && a <= n && b >= 0 && b <= m)st[a][b] = true;
    }
    for (int i = 1; i <= m; i++) {
        if (st[0][i]) {
            break;
        }
        f[0][i] = 1;
        //cout<<i<<" ";
    }
    for (int i = 1; i <= n; i++) {
        if (st[i][0]) {
            break;
        }
        f[i][0] = 1;
        //cout<<i<<" ";
    }
    f[0][0] = 1;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            if (st[i][j])continue;
            if (!st[i - 1][j])f[i][j] += f[i - 1][j];
            if (!st[i][j - 1])f[i][j] += f[i][j - 1];
            //  cout<<f[i][j]<<" ";
        }
        //cout<<endl;
    }

    cout << f[n][m] << endl;
    return 0;
}

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

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

相关文章

【亲测有效】connection refused报错 为什么redis 进程突然挂掉,频繁出现redis 进程突然挂掉情况解决方案

linux服务器redis 进程突然挂掉&#xff0c;频繁出现redis 进程突然挂掉情况解决方案&#xff0c;出现connection refused报错 前期出现过几次没当回事&#xff0c;但是最近频繁出现甚至有事&#xff0c;一天出现好几次就排查了一下问题 redis 进程突然挂掉常见原因 内存不足…

【后端】git与python的结合使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、git介绍二、git常见使用三、git与python的结合使用四、总结 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发…

ctfshow web41-web50

web41 代码审计 <?php if(isset($_POST[c])){$c $_POST[c]; if(!preg_match(/[0-9]|[a-z]|\^|\|\~|\$|\[|\]|\{|\}|\&|\-/i, $c)){eval("echo($c);");} }else{highlight_file(__FILE__); } ?> 过滤了&#xff1a;[0-9] [a-z] ^ ~ $ [ ] { } & -…

介绍一个开源IOT组态项目

项目介绍 金合可视化平台是一款强大而操作简便的低代码平台&#xff0c;专为满足物联网领域的可视化开发需求而设计。通过该平台&#xff0c;用户可以利用拖拽配置的方式&#xff0c;轻松创建个性化的可视化大屏&#xff0c;无需熟练的编程技能&#xff0c;大幅提高了开发效率。…

报错import build constraints exclude all Go files in

好久没用fyne突然报错 报错import ...go-gl.. build constraints exclude all Go files in go-gl .. 检查gcc --version正常输出 检查gcc版本正常&#xff0c;路径正常。 尝试解决的方法&#xff0c; 1.重新安装依赖&#xff0c;不行 2.重新配置下载地址&#xff0c;不…

制作github.io学术个人主页

制作如图的学术个人主页。About me - Xianwen Ling’s Blog 学术个人主页是一个学者展示个人学术成果和研究方向的重要工具。个人主页可以集中展示学者的研究论文、出版物、演讲和发布的项目等学术成果&#xff0c;这样其他人可以更方便地了解和评估学者的研究贡献。个人主页可…

基于uni-app的动态表单

一、应用场景和意义 可以通过配置字段和校验规则&#xff0c;快速完成页面开发、提升开发效率 二、应用前提 形成ui/业务规范&#xff0c;最好是应用在问卷调查之类的业务 三、动态表单的功能 字段报错、快速滚动定位报错信息、支持字段值和字段规则拆分&#xff0c;便于实…

Linux安装Matlab运行时

一般而言&#xff0c;安装Matlab的linux系统是带桌面版的&#xff0c;如果没带&#xff0c;不在本教程范围内。 一、下载Matlab 下载地址&#xff1a;MATLAB Runtime - MATLAB Compiler - MATLAB 本教程使用R2020b(9.9) 二、linux系统中进行解压 将zip传入linux系统&#xf…

微电子领域常见概念(八)靶材

微电子领域常见概念&#xff08;八&#xff09;靶材 靶材是用于物理气相沉积&#xff08;PVD&#xff09;技术中的一种关键材料&#xff0c;它在制备薄膜的过程中起到至关重要的作用。PVD技术包括多种不同的工艺&#xff0c;如磁控溅射、离子束溅射、分子束外延&#xff08;MBE…

Vue:vue的工程化

Vue前端工程化 前后端分离开发 即前端人员开发前端工程,将开发好的前端工程打包部署在前端服务器上 后端开发人员开发后端工程,再将后端工程打包部署在后端服务器上,这种模式称为前后端分离开发 而前后端要顺利对接的关键就是要遵循一定的开发规范 开发规范 这种开发规范定…

CCF区块链会议--Middleware 2024 截止5.24 附录用率

会议名称&#xff1a;Middleware CCF等级&#xff1a;CCF B类会议 类别&#xff1a;软件工程/系统软件/程序设计语言 录用率&#xff1a;2022年录用率38%&#xff08;8/21&#xff09; Topics of Interest The Middleware conference seeks original submissions of resear…

LAMP(Linux+Apache+MySQL+PHP)环境介绍、配置、搭建

LAMP(LinuxApacheMySQLPHP)环境介绍、配置、搭建 LAMP介绍 LAMP是由Linux&#xff0c; Apache&#xff0c; MySQL&#xff0c; PHP组成的&#xff0c;即把Apache、MySQL以及PHP安装在Linux系统上&#xff0c;组成一个环境来运行PHP的脚本语言。Apache是最常用的Web服务软件&a…

科技赋能无人零售

科技赋能无人零售&#xff0c;使其具备以下独特优势&#xff1a; 1. 全天候无缝服务 &#xff1a;无人零售店依托科技&#xff0c;实现24小时不间断运营&#xff0c;不受人力限制&#xff0c;满足消费者随时购物需求&#xff0c;尤其惠及夜间工作者、夜猫子及急需购物者&…

微前端是如何实现作用域隔离的?

微前端是如何实现作用域隔离的&#xff1f; 一、前言 沙箱&#xff08;Sandbox&#xff09;是一种安全机制&#xff0c;目的是让程序运行在一个相对独立的隔离环境&#xff0c;使其不对外界的程序造成影响&#xff0c;保障系统的安全。作为开发人员&#xff0c;我们经常会同沙…

03-JAVA设计模式-访问者模式

访问者模式 什么是访问者模式 访问者模式&#xff08;Visitor Pattern&#xff09;是软件设计模式中的一种行为模式&#xff0c;它用于将数据结构中的元素与操作这些元素的操作解耦。这种模式使得可以在不修改数据结构的情况下添加新的操作。 在访问者模式中&#xff0c;我们…

PHP+MYSQL多条件选一通用搜索系统功能单文件7KB

通用功能: 快速填写参数用于自己的mysql数据表搜索,ajax载入数据 <?php header("content-Type: text/html; charsetUTF-8"); //error_reporting(0);$dbhost "localhost"; //数据库地址本地localhost $dbuser "chalidecom"; //数据库账号 …

Tkinter是什么?

Tkinter是Python标准库中的一个模块&#xff0c;用于创建图形用户界面&#xff08;GUI&#xff09;应用程序。它提供了一组工具和组件&#xff0c;使开发者能够在Python中创建窗口、按钮、标签、文本框、菜单等各种界面元素&#xff0c;并通过这些元素构建交互式的用户界面。 T…

稀碎从零算法笔记Day59-LeetCode: 感染二叉树需要的总时间

题型&#xff1a;树、图、BFS、DFS 链接&#xff1a;2385. 感染二叉树需要的总时间 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给你一棵二叉树的根节点 root &#xff0c;二叉树中节点的值 互不相同 。另给你一个整数 start 。在第 0 分钟…

Three.js入门学习笔记

学习资料&#xff1a; 【Three.js】Three.js快速上手教程_three.module.js-CSDN博客 2024年了&#xff0c;是该学学Three.js了_three.js 2024-CSDN博客 一、three.js简介 three.js是JavaScript编写的WebGL第三方库。 three.js&#xff0c;webGL&#xff0c;openGL三者的关…

微信小程序4~6章总结

目录 第四章 页面组件总结 4.1 组件的定义及属性 4.2 容器视图组件 4.2.1 view 4.2.2 scroll-view 4.2.3 swiper 4.3 基础内容组件 4.3.1 icon ​编辑 4.3.2 text 4.3.3 progress ​编辑 4.4 表单组件 4.4.1 button 4.4.2 radio 4.4.3 checkbox 4.4.4 switch …