子序列(LIS、LCS)
来源:互联网 发布:旅游点评网站源码 编辑:程序博客网 时间:2024/06/10 22:22
LIS
int lis(int n) { memset(dp,0,sizeof(dp)); int ans=0; for (int i=0;i<n;i++) { for (int j=0;j<i;j++) if(b[j]<=b[i]) dp[i]=max(dp[i],dp[j]+1); ans=max(ans,dp[i]); } return ans; }
int a[N],dp[N];int n;//1-n int bin(int size,int k) { int l=1,r=size; while(l<=r) { int mid =(l+r)/2; if(k>dp[mid]) l = mid+1; else r = mid-1; } return l; } int lis() { int i,j,cnt=0,k; for(i=1;i<=n; i++) { if(cnt==0||a[i]>dp[cnt]) dp[++cnt] = a[i]; else { k = bin(cnt,a[i]); dp[k]=a[i]; } } return cnt; }
int lis(){int len=0;for(int i=0;i<n;i++){int k=lower_bound(f,f+len,a[i])-f;//upper_bound();f[k]=a[i];if(k==len) len++;}return len;}
LCS
int lcs(){int ii=strlen(a);int jj=strlen(b);memset(f,0,sizeof f);for(i=1;i<=ii;i++)for(j=1;j<=jj;j++)if(a[i-1]==b[j-1]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i][j-1],dp[i-1][j]);return dp[ii][jj];}
int lcs(int n,int m) { memset(dp,0,sizeof(dp)); for(int i=0;i<m;i++) for(int j=0,ans=0;j<n;j++) { int tmp=dp[j]; if(s1[i]==s2[j]) dp[j]=ans+1; else dp[j]=max(dp[j],dp[j-1]); ans=tmp; } }
0 0
- 子序列(LIS、LCS)
- luoguP3402 最长公共子序列(LCS-->LIS)
- 动态规划——最长公共子序列(LCS)&最长递增子序列(LIS)
- LIS(最长递增子序列)和LCS(最长公共子序列)的总结
- 单调递增最长子序列(LIS)&&最长公共子序列(LCS)
- 最长上升子序列(LIS) -最长公共子序列(LCS)
- 最长上升子序列问题(LIS)和最长公共子序列问题(LCS)
- 最长上升子序列(LIS)&最长公共子序列(LCS)
- 算法设计 - LCS 最长公共子序列&&最长公共子串 &&LIS 最长递增子序列
- LCS(最长子序列)
- 公共子序列(lcs)
- LIS&LCS最长递增子序列和最长公共子序列问题
- 【51Nod】1006 - 最长公共子序列Lcs(LCS)
- (DP6.1.4.1)UVA 111History Grading(最长递增子序列LIS 的LCS 解法)
- 最长上升子序列(LIS) 三种方法:O(nlogn,DP,LCS)
- LIS(最长上升子序列)
- 最长递增子序列问题((LIS))
- 最长增减子序列(LIS变体)
- imageIO读写图片
- 利用容器完成“数组中出现次数超过一半的数字”笔试题
- 多个Activity之间利用bundle传递数值
- 栈的实现
- 利用脚本帮找回微信上删除了“好友“
- 子序列(LIS、LCS)
- perl的arm平台移植
- 读书笔记数据科学入门————线性代数
- 使用JDBC4.0处理Oracle中BLOB类型的数据
- SpringMVC Controller接口控制器详解 BindException
- 九个 Console 命令,让 js 调试更简单
- 【机器学习】【base】 之 距离函数
- BZOJ3916 [Baltic2014]friends
- poj 1157 LITTLE SHOP OF FLOWERS