• hdu1503


    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<queue>
    #include<algorithm>
    #include<iomanip>
    #define INF 99999999
    using namespace std;
    
    const int MAX=100+10;
    char a[MAX],b[MAX];
    int dp[MAX][MAX],per[MAX][MAX];
    
    void Printf(int i,int j){
    	if(i+j == 0)return;
    	if(per[i][j] == 1)Printf(i-1,j),printf("%c",a[i]);
    	else if(per[i][j] == 2)Printf(i-1,j-1),printf("%c",a[i]);
    	else Printf(i,j-1),printf("%c",b[j]);
    }
    
    int main(){
    	while(cin>>a+1>>b+1){
    		int maxl=0,la=strlen(a+1),lb=strlen(b+1);
    		memset(dp,0,sizeof dp);
    		memset(per,0,sizeof per);
    		for(int i=1;i<=la;++i)per[i][0]=1;
    		for(int i=1;i<=lb;++i)per[0][i]=3;
    		for(int i=1;a[i] != '';++i){
    			for(int j=1;b[j] != '';++j){
    				if(a[i] == b[j])dp[i][j]=dp[i-1][j-1]+1,per[i][j]=2;
    				else if(dp[i-1][j]>dp[i][j-1])dp[i][j]=dp[i-1][j],per[i][j]=1;
    				else dp[i][j]=dp[i][j-1],per[i][j]=3;
    			}
    		}
    		Printf(la,lb);
    		printf("
    "); 
    	}
    	return 0;
    }



  • 相关阅读:
    第六次实训作业
    事件处理程序
    第四次实训作业
    I/O流
    课程总结
    求和计算器
    常用类的课后作业
    窗口实训1
    课后练习----实现窗口的切换
    第五次实训作业继承
  • 原文地址:https://www.cnblogs.com/pangblog/p/3315443.html
Copyright © 2020-2023  润新知