文章

105

粉丝

69

获赞

117

访问

54.1k

头像
Coincidence 题解:
P1293 上海交通大学机试题
发布于2024年8月18日 12:45
阅读数 293

#include<bits/stdc++.h>
using namespace std;
const int N = 110;
char str1[N], str2[N];
int dp[N][N];

int main()
{
   //dp[i][j]表示两个串从头开始,直到第一个串的第i位 
   //和第二个串的第j位最长公共子序列 
   scanf("%s", str1 + 1);
   scanf("%s", str2 + 1);
   int n = strlen(str1 + 1), m = strlen(str2 + 1);
   
   for(int i = 1; i <= n; i ++)
    for(int j = 1; j <= m; j ++)
     {
     	dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
     	if(str1[i] == str2[j])
     		dp[i][j] = max(dp[i][j], dp[i - 1][j - 1]+1);
     	//因为更新,所以++; 
     }
     
   cout<<dp[n][m];
	
   return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发