依本人的见解,定义一个二维数组,可以直接用一个指向指针的指针来表示
int **dp; //这样就定义了一个二维数组
这里不多说,直接给出实现返回二维数组的一个函数,大家可以比葫芦画瓢
用这个方法实现返回一个二维数组的函数。
int **getdp(const char *str1, const char *str2)
{
int **dp;
dp = (int **)malloc(strlen(str1) * sizeof(int **));
for (int i = 0; i < strlen(str1); i++)
dp[i] = (int *)malloc(strlen(str2) * sizeof(int));
//第一列赋值
for (int i = 0; i < strlen(str1); i++)
{
if (str1[i] == str2[0])
dp[i][0] = 1;
else
dp[i][0] = 0;
}
//第一行赋值
for (int j = 0; j < strlen(str2); j++)
{
if (str1[0] == str2[j])
dp[0][j] = 1;
else
dp[0][j] = 0;
}
//其余位置赋值为左上角加1
for(int i = 1; i < strlen(str1); i++)
for (int j = 1; j < strlen(str2); j++)
{
if (str1[i] == str2[j])
dp[i][j] = dp[i - 1][j - 1] + 1;
}
return dp;
}