鱼C论坛

 找回密码
 立即注册
查看: 2186|回复: 1

求大神帮忙!(最长公共子序列)

[复制链接]
发表于 2018-10-10 14:37:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdlib.h>
#include <stdio.h>
void LCSLength(int m, int n, char *x, char *y, int **c)
{
        int i, j;
        //初始化二维数组
        for (i = 1; i <= m; i++) 
        { 
                c[i][0] = 0; 
                printf("%d ", c[i][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;
                        else if 
                                (c[i - 1][j] >= c[i][j - 1]) c[i][j] = c[i - 1][j];
                        else 
                                c[i][j] = c[i][j - 1];
                }
        for (i = 0; i <= m; i++)
        {
                for (j = 0; j <= n; j++)
                {
                        printf("%d ", c[i][j]);
                }
                printf("\n");
        }

}

int main()
{
        char a[] = { 1, 3, 4, 5, 6,7, 7, 8,'\0' };
        char b[] = { 3, 5, 7, 4, 8,6,7,8,2,'\0' };
        char *x = &a[0];
        char *y = &b[0];
        int m = sizeof(a) - 1; //X元素序列的个数
        int n = sizeof(b) - 1;//Y元素序列的个数
        //为二维数组申请动态空间,m为行数,n为列数
        int **c = (int **)malloc(sizeof(int *) * m); //分配行数
        for (int i = 0; i < m; i++) //为每一行分配内存
        {
                c[i] = (int*)malloc(sizeof(int)*n);
        }
        printf("-------\n");
        LCSLength(m, n, x, y, c);
        printf("-------\n");
        printf("%d\n", c[m][n]);

}

报错如图
微信图片_20181010143618.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-10 20:41:02 | 显示全部楼层
void LCSLength()函数数组初始化的时候越界了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-2 16:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表