问题的递归式写成:
回溯输出最长公共子序列过程:
下列代码只是求解c[i][j];
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int c[10][10];
memset(c,0,sizeof(c));
char a[10]="0bdcaba";
char b[10]="0abcbdab";
for(int i=0;i<7;i++)
for(int j=0;j<8;j++)
{
if(i==0||j==0)
c[i][j]=0;
if(i>0&&j>0&&a[i]==b[j])
c[i][j]=c[i-1][j-1]+1;
if(i>0&&j>0&&a[i]!=b[j])
c[i][j]=max(c[i-1][j],c[i][j-1]);
}
for(int i=0;i<7;i++)
for(int j=0;j<8;j++)
cout<<c[i][j]<<" ";
}