二维DP
2025-08-04 14:45:44
发布于:浙江
8阅读
0回复
0点赞
const int n=x.size(),m=y.size();
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(x[i-1]==y[j-1]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
cout<<dp[n][m];
全部评论 1
#include<iostream>
#pragma G++ optimize("Ofast")
using namespace std;
string x,y;
int dp[201][201];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
while(cin>>x>>y){
const int n=x.size(),m=y.size();
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
if(x[i-1]==y[j-1]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
}
}
cout<<dp[n][m]<<'\n';
}
return 0;
}2025-08-04 来自 浙江
0
有帮助,赞一个