最长公共子序列问题

主要代码:

void LCSLength (char *x ,char *y, int m, int n, int **c, int **b)

{

       int i ,j;

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

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

       for (i = 1; i <= m; i++)

          for (j = 1; j <= n; 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;

            }

         }

}

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);

           printf("%c",x[i]);

      }

      else if (b[i][j]== 2)

           LCS(i-1,j,x,b);

      else LCS(i,j-1,x,b);

}

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭