本文主要是介绍洛谷P2364 胖男孩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
LCS 输出方案~
#include<iostream>
#include<cstring>
using namespace std;
int dp[110][110][110];
string ans[110][110][110];
char s1[110],s2[110],s3[110];int main()
{scanf("%s",s1+1);scanf("%s",s2+1);scanf("%s",s3+1);int n1 = strlen(s1+1),n2 = strlen(s2+1),n3 = strlen(s3+1);for(int i=1;i<=n1;i++)for(int j=1;j<=n2;j++)for(int k=1;k<=n3;k++){if(s1[i]==s2[j]&&s1[i]==s3[k]){if(dp[i][j][k]<dp[i-1][j-1][k-1]+1){dp[i][j][k] = dp[i-1][j-1][k-1]+1;ans[i][j][k] = ans[i-1][j-1][k-1]+s1[i];}}if(dp[i][j][k]<dp[i-1][j][k]){dp[i][j][k] = dp[i-1][j][k];ans[i][j][k] = ans[i-1][j][k];}if(dp[i][j][k]<dp[i][j-1][k]){dp[i][j][k] = dp[i][j-1][k];ans[i][j][k] = ans[i][j-1][k];}if(dp[i][j][k]<dp[i][j][k-1]){dp[i][j][k] = dp[i][j][k-1];ans[i][j][k] = ans[i][j][k-1];}}cout<<ans[n1][n2][n3];}
这篇关于洛谷P2364 胖男孩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!