2.4学习总结

2.4
1.不相交的线
2.最⼤⼦序和
3.判断⼦序列
4.不同的子序列
5.编辑距离
6.零的数列 Zero Sum
7.迷宫与陷阱

https://leetcode.cn/problems/uncrossed-lines/description/

还是找最长公共子序列的问题

class Solution {
public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {int dp[505][505];memset(dp,0,sizeof(dp));for (int i=1;i<=nums1.size();++i){for (int j=1;j<=nums2.size();++j){if (nums1[i-1]==nums2[j-1]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}return dp[nums1.size()][nums2.size()];}
};

https://leetcode.cn/problems/maximum-subarray/description/

class Solution {
public:int maxSubArray(vector<int>& nums) {vector<int>dp(nums.size()+1,0);dp[0]=nums[0];int res=dp[0];for (int i=1;i<nums.size();++i){dp[i]=max(dp[i-1]+nums[i],nums[i]);if (dp[i]>res)res=dp[i];}return res;}
};

https://leetcode.cn/problems/is-subsequence/description/

class Solution {
public:bool isSubsequence(string s, string t) {vector<vector<int>> dp(s.size() + 1, vector<int>(t.size() + 1, 0));for (int i=1;i<=s.size();++i){for (int j=1;j<=t.size();++j){if (s[i-1]==t[j-1]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}int res=dp[s.size()][t.size()];if (res==s.size())return true;else return false;}
};

https://leetcode.cn/problems/distinct-subsequences/description/

class Solution {
public:int numDistinct(string s, string t) {vector<vector<uint64_t>> dp(s.size() + 1, vector<uint64_t>(t.size() + 1));for (int i=0;i<=s.size();++i) dp[i][0]=1;for (int i=1;i<=s.size();++i){for (int j=1;j<=t.size();++j){if (s[i-1]==t[j-1]) dp[i][j]=dp[i-1][j-1]+dp[i-1][j];else dp[i][j]=dp[i-1][j];}}return dp[s.size()][t.size()];}
};

https://leetcode.cn/problems/edit-distance/description/

编辑距离是经典的动态规划问题,当遇到两个字符相等的时候,就直接保持上一个状态,如果不相等,就删除第一个字符串的字符,或者删除第二个字符串的字符,或者替换一个字符,所以就可以得到转移方程,

class Solution {
public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() + 1, vector<int>(word2.size() + 1, 0));for (int i=0;i<=word1.size();++i) dp[i][0]=i;for (int j=0;j<=word2.size();++j) dp[0][j]=j;for (int i=1;i<=word1.size();++i){for (int j=1;j<=word2.size();++j){if (word1[i-1]==word2[j-1]) dp[i][j]=dp[i-1][j-1];else dp[i][j]=min({dp[i-1][j],dp[i][j-1],dp[i-1][j-1]})+1;}}return dp[word1.size()][word2.size()];}
};

零的数列 Zero Sumhttps://www.luogu.com.cn/problem/P1473

题目描述

请考虑一个由 11 到 �N 的数字组成的递增数列:1,2,3,…,�1,2,3,…,N。

现在请在数列中插入 + 表示加,或者 - 表示减, (空格) 表示空白(例如 1-2 3 就等于 1-23),来将每一对数字组合在一起(请不要在第一个数字前插入符号)。

计算该表达式的结果并判断其值是否为 00。 请你写一个程序找出所有产生和为零的长度为N的数列。

输入格式

单独的一行表示整数 �N(3≤�≤93≤N≤9)。

输出格式

按照 ASCI I码的顺序,输出所有在每对数字间插入 +- (空格) 后能得到结果为零的数列。

输入输出样例

输入 #1复制

7

输出 #1复制

1+2-3+4-5-6+7
1+2-3-4+5+6-7
1-2 3+4+5+6+7
1-2 3-4 5+6 7
1-2+3+4-5+6-7
1-2-3-4-5+6+7

思路:用DFS直接暴力搜索,重难点在于检查函数的实现

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
char fuhao[3]={' ','+','-'};
int n;
int a[11];
bool check(){int res=0;for (int i=1;i<=n;++i){if (a[i]==0) continue;int t=i;for (int j=i+1;j<=n;++j){if (a[j]!=0)break;t=t*10+j;}if (a[i]==1) res+=t;else res-=t;}if (res==0)return true;else return false;
}
void dfs(int x){if (x==n+1){if (check()){cout<<1;for (int i=2;i<=n;++i){cout<<fuhao[a[i]]<<i;}cout<<endl;return ;}else return ;}for (int i=0;i<=2;++i){a[x]=i;dfs(x+1);a[x]=0;}
}
signed main(){cin>>n;a[1]=1;dfs(2);
}

迷宫与陷阱https://www.luogu.com.cn/problem/P8673

题目描述

小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由 �×�N×N 个格子组成的二维迷宫。

小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫。

每一步,他可以移动到上下左右相邻的格子中(前提是目标格子可以经过)。

迷宫中有些格子小明可以经过,我们用 . 表示;

有些格子是墙壁,小明不能经过,我们用 # 表示。

此外,有些格子上有陷阱,我们用 X 表示。除非小明处于无敌状态,否则不能经过。

有些格子上有无敌道具,我们用 % 表示。

当小明第一次到达该格子时,自动获得无敌状态,无敌状态会持续 �K 步。

之后如果再次到达该格子不会获得无敌状态了。

处于无敌状态时,可以经过有陷阱的格子,但是不会拆除 / 毁坏陷阱,即陷阱仍会阻止没有无敌状态的角色经过。

给定迷宫,请你计算小明最少经过几步可以离开迷宫。

输入格式

第一行包含两个整数 �N 和 �K。(1≤�≤1000,1≤�≤10)(1≤N≤1000,1≤K≤10)。

以下 �N 行包含一个 �×�N×N 的矩阵。

矩阵保证左上角和右下角是 .

输出格式

一个整数表示答案。如果小明不能离开迷宫,输出 −1−1。

输入输出样例

输入 #1复制

5 3
...XX
##%#.
...#.
.###.
.....

输出 #1复制

10

输入 #2复制

5 1
...XX
##%#.
...#.
.###.
.....

输出 #2复制

12

思路:套BFS的模版,加上一些状态判断

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
const int N=1005;
char a[N][N],vis[N][N];
int n,k;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
struct node{int x;int y;int s;int w;
};
queue<node>q;
signed main(){cin>>n>>k;memset(vis,-1,sizeof(vis));for (int i=0;i<n;++i){		cin>>a[i];}q.push({0,0,0,0});vis[0][0]=0;while (!q.empty()){node now=q.front(); q.pop();int x=now.x,y=now.y,s=now.s,m=now.w;if (x==n-1 && y==n-1){cout<<s;return 0;}for (int i=0;i<4;++i){int tx=x+dir[i][0],ty=y+dir[i][1];if (tx<0 || ty<0 || tx>=n || ty>=n)continue;if (a[tx][ty]=='X' && now.w==0){continue;}if (now.w-1>0)m=now.w-1;else m=0;if (a[tx][ty]=='%'){m=k;}if (vis[tx][ty]<m && a[tx][ty]!='#'){vis[tx][ty]=m;q.push({tx,ty,s+1,m});}}}cout<<-1;return 0;
}

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

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

相关文章

算法学习——华为机考题库9(HJ56 - HJ63)

算法学习——华为机考题库9&#xff08;HJ56 - HJ63&#xff09; HJ56 完全数计算 描述 完全数&#xff08;Perfect number&#xff09;&#xff0c;又称完美数或完备数&#xff0c;是一些特殊的自然数。 它所有的真因子&#xff08;即除了自身以外的约数&#xff09;的和&…

C# CAD界面-自定义工具栏(二)

运行环境 vs2022 c# cad2016 调试成功 一、引用 acdbmgd.dllacmgd.dllaccoremgd.dllAutodesk.AutoCAD.Interop.Common.dllAutodesk.AutoCAD.Interop.dll using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.T…

题目 1163: 排队买票

题目描述: 有M个小孩到公园玩&#xff0c;门票是1元。其中N个小孩带的钱为1元&#xff0c;K个小孩带的钱为2元。售票员没有零钱&#xff0c;问这些小孩共有多少种排队方法&#xff0c;使得售票员总能找得开零钱。注意&#xff1a;两个拿一元零钱的小孩&#xff0c;他们的位置互…

【pwn】pwnable_start --只有read和write函数的getshell

首先查一下程序的保护情况 保护全关&#xff01;&#xff01;&#xff01; 然后看ida逻辑 ida的结果很简洁&#xff0c;只有一段汇编代码&#xff0c;我们再来看看nc情况 现在我们来分析一下汇编代码 mov ecx, esp ; addr .text:08048089 B2 14 …

Fink CDC数据同步(六)数据入湖Hudi

数据入湖Hudi Apache Hudi(简称&#xff1a;Hudi)使得您能在hadoop兼容的存储之上存储大量数据&#xff0c;同时它还提供两种原语&#xff0c;使得除了经典的批处理之外&#xff0c;还可以在数据湖上进行流处理。这两种原语分别是&#xff1a; Update/Delete记录&#xff1a;H…

LLaVA:GPT-4V(ision) 的新开源替代品

LLaVA&#xff1a;GPT-4V(ision) 的新开源替代品。 LLaVA &#xff08;https://llava-vl.github.io/&#xff0c;是 Large Language 和Visual A ssistant的缩写&#xff09;。它是一种很有前景的开源生成式 AI 模型&#xff0c;它复制了 OpenAI GPT-4 在与图像对话方面的一些功…

arping交叉编译

arping命令依赖libpcap和libnet&#xff0c;需要先交叉编译这两个库。 1.交叉编译libpcap 下载libpcap源文件&#xff0c;从github上克隆: git clone https://github.com/the-tcpdump-group/libpcap.git source交叉编译环境 # environment-setup是本机的交叉编译环境, 里面…

系统架构评估

系统架构评估: 系统架构评估是对系统设计的整体结构、组件之间的交互方式及其满足功能需求、性能需求、可扩展性、安全性、可靠性、可维护性、成本效益等多方面目标的能力进行深入审查和分析的过程。其主要目的在于确保系统的架构设计能够有效地支撑业务发展&#xff0c;并在未…

MongoDB 聚合:$listSessions

列出存储在config数据库system.sessions集合中的所有会话。MongoDB部署的所有成员都能看到这些会话。 当用户在mongod或mongos实例上创建会话时&#xff0c;会话最初存储在实例的内存中&#xff0c;也就是实例的本地记录。实例会定期将本地缓存的会话同步到config数据库中的sy…

LabVIEW风力发电机在线监测

LabVIEW风力发电机在线监测 随着可再生能源的发展&#xff0c;风力发电成为越来越重要的能源形式。设计了一个基于控制器局域网&#xff08;CAN&#xff09;总线和LabVIEW的风力发电机在线监测系统&#xff0c;实现风力发电机的实时监控和故障诊断&#xff0c;以提高风力发电的…

rust ethers-rs 签名与solidity验证签名例子

第一段代码是一个 Solidity 智能合约,用于验证基于 EIP712 格式的签名。它包括了定义常量、结构体、函数和验证逻辑的实现。第二段代码是一个 Rust 测试函数,用于测试基于 EIP712 格式的签名的生成和验证过程。它使用了 `ethers` 和 `ethers-signers` 库来创建钱包、定义签名…

windows安装Visual Studio Code,配置C/C++运行环境(亲测可行)

一.下载 Visual Studio Code https://code.visualstudio.com/ 二.安装 选择想要安装的位置: 后面的点击下一步即可。 三.下载编译器MinGW vscode只是写代码的工具&#xff0c;使用编译器才能编译写的C/C程序&#xff0c;将它转为可执行文件。 MinGW下载链接&#xff1a;…

Stable Diffusion 模型下载:国风3 GuoFeng3

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十推荐提示词下载地址模型介绍 欢迎使用GuoFeng3模型 - 这是一个中国华丽古风风格模型,也可以说是一个古风游戏角色模型,具有2.5D的质感。 条目内

CDH6.3.2 多 Spark 版本共存

一 部署Spark客户端 1.1 部署spark3客户端 tar -zxvf spark-3.3.1-bin-3.0.0-cdh6.3.2.tgz -C /opt/cloudera/parcels/CDH/lib cd /opt/cloudera/parcels/CDH/lib mv spark-3.3.1-bin-3.0.0-cdh6.3.2/ spark3将 CDH 集群的 spark-env.sh 复制到 /opt/cloudera/parcels/CDH/li…

C语言函数递归例子2青蛙跳台阶问题

接下来我们来看一下第二个例子青蛙跳台阶 青蛙跳台阶问题 这个问题经常在各类面试中看到。一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。是实践函数递归的典型问题 分析问题 我们先假设有n个台阶&#xff0c;如果n1&am…

如何构建多种系统架构支持的 Docker 镜像

如何构建多种系统架构支持的 Docker 镜像 1.概述2.解决方案3.使用manifest案例 1.概述 我们知道使用镜像创建一个容器&#xff0c;该镜像必须与 Docker 宿主机系统架构一致&#xff0c;例如 Linux x86_64 架构的系统中只能使用 Linux x86_64 的镜像创建容器 例如我们在 Linux…

PyTorch 2.2 中文官方教程(七)

使用 torchtext 库进行文本分类 原文&#xff1a;pytorch.org/tutorials/beginner/text_sentiment_ngrams_tutorial.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 注意 点击这里下载完整示例代码 在本教程中&#xff0c;我们将展示如何使用 torchtext 库构建文…

Vue中nextTick方法的作用与原理

在Vue的开发中&#xff0c;你可能会遇到一些异步更新的问题&#xff0c;如在改变数据后需要等待DOM更新完毕后再进行下一步操作。这时就可以使用Vue提供的nextTick方法来解决这个问题。 nextTick方法的作用是在DOM更新之后执行回调函数&#xff0c;确保在下次DOM更新循环结束之…

ReactNative实现一个圆环进度条

我们直接看效果&#xff0c;如下图 我们在直接上代码 /*** 圆形进度条*/ import React, {useState, useEffect} from react; import Svg, {Circle,G,LinearGradient,Stop,Defs,Text, } from react-native-svg; import {View, StyleSheet} from react-native;// 渐变色 const C…

PyTorch 2.2 中文官方教程(四)

torch.nn 到底是什么&#xff1f; 原文&#xff1a;pytorch.org/tutorials/beginner/nn_tutorial.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 注意 点击这里下载完整示例代码 作者&#xff1a; Jeremy Howard&#xff0c;fast.ai。感谢 Rachel Thomas 和 Fr…