文章

35

粉丝

134

获赞

55

访问

24.6k

头像
最长公共子序列 题解:动态规划问题AC

#include <bits/stdc++.h>
using namespace std;
#define N 1001
int dp[N][N];
int main(){
	string s1,s2;
	while(cin>>s1){
		cin>>s2;
		for(int i=0;i<=s1.size();i++){
			for(int j=0;j<=s2.size();j++){
				if(i==0||j==0){
					dp[i][j] = 0;
					continue;
				}
				if(s1[i-1]==s2[j-1]){
					dp[i][j] = dp[i-1][j-1]+1;
				}else{
					dp[i][j] = max(dp[i][j-1],dp[i-1][j]);
				}
			}
		}
		cout<<dp[s1.size()][s2.size()]<<endl;
	}
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发