1 条题解

  • 0
    @ 2025-2-14 21:20:40

    C :

    #include "stdio.h"
    #include "string.h"
    int n,m;
    char a[5002],b[5002];
    int f[2][5001];
    int max(int a,int b)
    {
    	if(a>b)
    		return a;
    	return b;
    }
    int main()
    {
    	int i,j;
    	scanf("%s%s",a,b);
    	n=strlen(a);
    	m=strlen(b);
    	for(i=1;i<=n;i++)
    	{
    		for(j=1;j<=m;j++)
    		{
    			if(a[i-1]==b[j-1])
    				f[i%2][j]=f[(i-1)%2][j-1]+1;
    			else
    				f[i%2][j]=max(f[(i-1)%2][j],f[i%2][j-1]);
    		}
    	}
    	printf("%d\n",f[n%2][m]);
    	return 0;
    }
    

    C++ :

    //最长公共子序列 
    #include<iostream>
    #include<fstream>
    #include<string>
    using namespace std;
    const int N=1005;
    int f[N][N]={0};
    int main()
    {
    	//ifstream cin("lcs.in");
    	//ofstream cout("lcs.out");
    	string s1,s2;
    	cin>>s1>>s2;
    	int len1=s1.size(),len2=s2.size();
    	for (int i=0;i<len1;i++) f[i][0]=0;
    	for (int j=0;j<len2;j++) f[0][j]=0;
    	for (int i=1;i<=len1;i++)
    		for (int j=1;j<=len2;j++)
    			if (s1[i-1]==s2[j-1])
    				f[i][j]=f[i-1][j-1]+1;
    			else f[i][j]=max(f[i-1][j],f[i][j-1]);
    	cout<<f[len1][len2]<<endl;
    	//system("pause");
    	return 0;
    }
    

    Java :

    import java.util.Scanner;
    
    
    public class Main {
    	static String s1,s2;
    	static int[][] dp = new int[1005][1005];
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		while(in.hasNext()){
    			s1 = in.next();
    			s2 = in.next();
    			solve();
    		}
    	}
    
    	public static void solve() {
    		int size1 = s1.length();
    		int size2 = s2.length();
    		if (size1 == 0 || size2 == 0)
    			return ;
    		for (int i = 1; i <= size1; i++) {
    			for (int j = 1; j <= size2; j++) {
    				if (s1.charAt(i - 1) == s2.charAt(j - 1))
    					dp[i][j] = dp[i - 1][j - 1] + 1;
    				else
    					dp[i][j] = dp[i - 1][j] > dp[i][j - 1] ? dp[i - 1][j]
    							: dp[i][j - 1];
    			}
    		}
    		System.out.println(dp[size1][size2]);
    	}
    }
    
    
    • 1

    信息

    ID
    776
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者