动态规划之最长公共子序列

代码

#include<iostream>
using namespace std;
#define N 11//因为a数组长度为10
#define M 11//同理

int c[N][M]={0};
char a[N]={' ','b','c','a','b','g','a','b','c','c','c'};//
char b[N]={' ','b','d','a','f','c','a','k','c','c','c'}; 

void lcs()
{
	int i,j;
	for(i=1;i<N;i++){
		for(j=1;j<M;j++){
			if(a[i]==b[j]){
				c[i][j]=c[i-1][j-1]+1;
			}
			else{
				int value1=c[i-1][j];
				int value2=c[i][j-1];
				c[i][j]=value1>value2?value1:value2;
			}
		}
	}
}

int main()
{
	lcs();
	cout<<c[10][10];
	return 0;
}

辅助图

posted @ 2020-04-13 23:01  南理工学渣  阅读(6)  评论(0)    收藏  举报