标题:求最长公共子序列的c代码
取消只看楼主
我说狗阳啊
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-5-16
结帖率:0
已结贴  问题点数:20 回复次数:1 
求最长公共子序列的c代码
按照书上的算法写的代码,但是结果总是不对,求大神帮忙看一下
#include <stdlib.h>
#include <string.h>

#define OK 1
#define Error 0
#define OVERFLOW -2
#define INFEASIBLE -1
#define TURE 1
#define FALSE 0


typedef int Status;
typedef int SElemtype;


#define ATACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OPTR 10
#define OPND 10
Status lcs(char A[],char B[]);


#endif // LCS_H_INCLUDED

Status lcs(char A[],char B[])
{
    int i,j,L[20][20],m,n;
      n=strlen(A);
      m=strlen(B);
    for(i=0;i<n;i++)
        L[i][0]=0;
    for(j=0;j<m;j++)
        L[0][j]=0;
    for(i=1;i<=n;i++)

   {
       for(j=1;i<=m;j++)
        if('A[i]'=='B[j]')
            L[i][j]=L[i-1][j-1]+1;
         else
            {
                if(L[i][j-1]>L[i-1][j])
                  L[i][j]=L[i][j-1];
             else L[i][j]=L[i-1][j];
         }
   }
       return L[n][m];

}
#include <iostream>
#include"LCS.h"
#include <string.h>

using namespace std;

int main()
{

    char A[20],B[20];
    int i,n,m,MAX;
    printf("请输入一个字符串A:");
      gets(A);
    printf("请输入一个字符串B:");
      gets(B);
    MAX=lcs(A,B);
    printf("最长公共子序列的长度为:%d",lcs(A,B));

}
搜索更多相关主题的帖子: include define int char for 
2018-05-16 17:14
我说狗阳啊
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-5-16
得分:0 
谢谢啦,我刚才找到问题在哪了
把 if('A[i]'=='B[j]')
改成 if(A[i]==B[j])就行了
2018-05-17 16:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486983-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.394362 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved