C_Dp

<span style="color:#000099;">/*
C - 简单dp 例题
Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u
Submit

Status
Description
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, ..., xm > another sequence Z = < z1, z2, ..., zk > is a subsequence of X if there exists a strictly increasing sequence < i1, i2, ..., ik > of indices of X such that for all j = 1,2,...,k, x ij = zj. For example, Z = < a, b, f, c > is a subsequence of X = < a, b, c, f, b, c > with index sequence < 1, 2, 4, 6 >. Given two sequences X and Y the problem is to find the length of the maximum-length common subsequence of X and Y.
Input
The program input is from the std input. Each data set in the input contains two strings representing the given sequences. The sequences are separated by any number of white spaces. The input data are correct.
Output
For each set of data the program prints on the standard output the length of the maximum-length common subsequence from the beginning of a separate line.
Sample Input
abcfbc         abfcab
programming    contest
abcd           mnp
Sample Output
4
2
0
By Grant Yuan
2014.7.16
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
char a[1000];
char b[1000];
int dp[1000][1000];
int max(int aa,int bb)
{
    return aa>=bb?aa:bb;
}
int main()
{   int l1,l2;
    while(~scanf("%s%s",a,b)){
        l1=strlen(a);
        l2=strlen(b);
        memset(dp,0,sizeof(dp));
        for(int i=0;i<l1;i++)
          for(int j=0;j<l2;j++)
            {
                if(a[i]==b[j])
                  dp[i+1][j+1]=dp[i][j]+1;
                else
                  dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);
            }
        cout<<dp[l1][l2]<<endl;
      }
      return 0;
}
</span>

C_Dp

时间: 2024-10-10 09:12:10

C_Dp的相关文章

排列与组合的一些定理

一,加法原理与乘法原理 加法原理与乘法原理是排列与组合的基础.加法原理本质上是分类,乘法原理本质上是分步. 分类,就是把一个集合(某事物)分成互不相交的若干独立的部分.比如,概率论中的全概率公式就将事件分成”全划分“ 分类思想可以简化程序的时间复杂度.比如:最短路径算法-Dijkstra算法的应用之单词转换(词梯问题) 分步,就是第一步干嘛,第二步再干嘛……比如A地到D地,第一步:先到达B地:第二步,再到达C地 二,排列 P(n,r)表示从n个数中选择r个数的一个全排列 公式:P(n,r)=P(