LightOJ1013-Love Calculator-dp
来源:互联网 发布:戏剧打击乐器软件下载 编辑:程序博客网 时间:2024/05/22 15:53
题目大意:给你两个序列,让你找出能包含他们两个序列的最小长度和那个长度之下有几个序列能够满足;
题目解析:最小长度很简单,dp一下,算出来是ans,接下来我们设dp[i][j][k]为s1前i个字母和s2前j个字母组成能够重叠且长度为k的个数,那个枚举的时候如果s1[i]=s2[j],dp[i][j][k]=dp[i-1][j-1][k-1],else dp[i][j][k]=dp[i-1][j][k]+dp[i][j-1][k],答案就是dp[la][lb][ans];
AC代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>using namespace std;int main(){int cas,c,la,lb,i,j,k,dp1[32][32];long long dp[32][32][32];char s1[32],s2[32];scanf("%d",&cas);getchar();for(c=1;c<=cas;c++){gets(s1);gets(s2);la=strlen(s1);lb=strlen(s2);memset(dp1,0,sizeof(dp1));for(i=1;i<=la;i++){for(j=1;j<=lb;j++){if(s1[i-1]==s2[j-1]){dp1[i][j]=dp1[i-1][j-1]+1;}else dp1[i][j]=max(dp1[i-1][j],dp1[i][j-1]);}}int x=la+lb-dp1[la][lb];int lc=dp1[la][lb];memset(dp,0,sizeof(dp));for(i=0;i<=la;i++)dp[i][0][0]=1;for(i=0;i<=lb;i++)dp[0][i][0]=1;for(i=1;i<=la;i++){for(j=1;j<=lb;j++){if(s1[i-1]==s2[j-1]){for(k=1;k<=lc;k++){dp[i][j][k]=dp[i-1][j-1][k-1];}}else {for(k=0;k<=lc;k++)dp[i][j][k]=dp[i-1][j][k]+dp[i][j-1][k];}}}printf("Case %d: %d %lld\n",c,x,dp[la][lb][lc]);} return 0;}
0 0
- LightOJ1013---Love Calculator (dp)
- LightOJ1013-Love Calculator-dp
- ☆lightoj1013 Love Calculator 两种转移方程详解(LCS+方案数DP)
- LightOJ 1013 - Love Calculator(DP)
- LightOJ 1013 Love Calculator (LCS+DP)
- LightOJ - 1013 Love Calculator(LCS + DP)
- LightOJ 1013 - Love Calculator(dp)
- LightOJ 1013 - Love Calculator (LCS + dp)
- light Oj 1013 - Love Calculator (dp)
- Light OJ 1013 Love Calculator (dp)
- 【LightOJ 1013】Love Calculator(LCS+DP)
- lightoj 1013 Love Calculator (LCS+dp)
- LightOJ-1013-Love Calculator [LCS][DP]
- LightOJ 1013 Love Calculator 【DP(LCS变形)】
- C - Love Calculator
- LightOJ 1013 - Love Calculator
- 10424 - Love Calculator
- LightOJ 1013 - Love Calculator
- [LeetCode] Longest Substring Without Repeating Characters 解题报告
- Iterator浅析
- Spark-Lamda架构
- Rocchio文本分类
- mysql insert into select插入表中的数据与select的数据不一样
- LightOJ1013-Love Calculator-dp
- 题目报错总结
- FastDFS架构介绍
- Leetcode-415. Add Strings
- Java基础复习---数组
- zz
- EAX、ECX、EDX、EBX寄存器的作用
- sublime text 3搭建/配置C++编译环境
- Android 存储:Internal Storage的用法以及与External storage 的区别