子序列专题
最长递增子序列 LIS
用动态规划做。
Favorite Color Stripe (30)
#include <iostream> #include <cstdio> #include <cstdlib> #include <algorithm> #include <string> #include <string.h> #include <vector> using namespace std; int n,m,l,x,num,maxv; int f[210],a[10010],dp[10010]; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;++i){ scanf("%d",&x); f[x]=i; } scanf("%d",&l); for(int i=1;i<=l;++i){ scanf("%d",&x); if(f[x]) a[++num]=f[x]; } for(int i=1;i<=num;++i){ dp[i]=1; //对于每个元素,只有自己的话长度就是1 for(int j=1;j<i;++j) if(a[j]<=a[i]) dp[i]=max(dp[i],dp[j]+1); maxv=max(maxv,dp[i]); } printf("%d\n",maxv); return 0; }
最大公共子序列
本文作者:Ryomk
本文链接:https://www.cnblogs.com/preccrep/p/16410858.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步