最长公共子序列(未完...) 动态规划&递归

代码因为c++水平限制,主要是数组初始化或传参的问题。运行控制台程序出错。。

先放在这里,日后改动。

会转载两篇最长公共子序列的文章,我的代码是借鉴java实现的哪一篇的(数组)传参;c++的那一篇应用了全局变量,从传参中解放了!!

说了那么多,其实就是下面的代码指望继续debug才能用!!

#include <iostream>
#include <cstring>

using namespace std;



int** LCSLength(int m,int n,char *x,char *y){
              int i,j;
              int **b=new int *[20];
               for(int i=1;i<=20;i++){
                b[i]=new int [20];
              }

                int **c=new int *[20];
              for(int i=1;i<=20;i++){
                c[i]=new int [20];
              }





                  for(int i=0;i<20;i++)
      for(int j=0;j<20;j++)
        {c[i][j]=0; b[i][j]=0;}



              for(i=1;i<=20;i++)c[i][0]=0;
                for(j=1;j<=20;j++)c[0][j]=0;

                for(i=1;i<=20;i++)
                            for(j=1;j<=20;j++){
                             if(x[i]==y[j])
                               {
                                  c[i][j]=c[i-1][j-1]+1; b[i][j]=1;
                               }
                               else if(c[i-1][j]>c[i][j-1]){
                               c[i][j]=c[i-1][j]; b[i][j]=2;
                               }
                               else
                               c[i][j]=c[i][j-1]; b[i][j]=3;
                            }
                            return b;
}


void LCS(int i,int j,char *x,int **b){
              if(i==0||j==0)return;
              if(b[i][j]==1){LCS(i-1,j-1,x,b); cout<<x[i]; }
              else if(b[i][j]==2)LCS(i-1,j,x,b);
              else LCS(i,j-1,x,b);


}



int main()
{

     char *x={"0abcbdab"};
     char *y={"0bdcaba"};

     int **b;

     b=LCSLength(7,6,x,y);
     LCS(7,6,x,b);
    return 0;
}



错误没找到,运行出错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值