文章

17

粉丝

0

获赞

66

访问

1.8k

头像
最长连续公共子序列 C语言题解:利用二维数组动态规划
P1730 西安电子科技大学/南京大学机试题
发布于2026年3月14日 16:45
阅读数 109

#include <stdio.h>
#define MAX 101

int main()
{
    char str1[MAX],str2[MAX];
    int len1,len2;
    while(scanf("%s %s",str1,str2)!=EOF){
        //获取长度(可替换为string.h里的strlen函数)
        for(len1=0;str1[len1]!='\0';len1++){}
        for(len2=0;str2[len2]!='\0';len2++){}

        int dp[MAX][MAX]={0};//动态规划数组
        int max=0;
        int end=0;//最终字符串所在位置的最后一位

        for(int i=1;i<=len1;i++){
            for(int j=1;j<=len2;j++){
                if(str1[i-1]==str2[j-1]){//字符匹配成功
                    dp[i][j]=dp[i-1][j-1]+1;//每匹配上一个字符,就相当于去掉这个字符时的最长序列值加一
                    if(dp[i][j]>=m...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发