Я пытаюсь передать 2d-массив функции, но компилятор показывает ошибку:
ошибка: невозможно преобразовать int (*)[5]
в int**
для аргумента 1
в int max_size(int**, int, int)
Я знаю теорию, но не могу понять, почему она не работает.
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define r 6
#define c 5
using namespace std;
int max_size(int *g[],int m,int n)
{
// Initial Structure for DP
int i,j;
int **s = (int **) malloc (r*sizeof(int *));
for(i=0;i<r;i++)
s[i]=(int *)malloc(c*sizeof(int));
memset(s,0,sizeof(s));
// Initialization for DP
for(i=0;i<r;i++)
s[i][0] = g[i][0];
for(i=0;i<c;i++)
s[0][i] = g[0][i];
// Formulation for DP
for(i=1;i<r;i++)
{
for(j=1;j<c;j++)
{
if(g[i][j])
s[i][j]= min(s[i-1][j],s[i-1][j-1],s[i][j-1])+1;
else
s[i][j]=0;
}
}
int c = 0;
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
if(s[i][j]>c) c=s[i][j];
}
}
return c;
}
int main()
{
int m[r][c] = {{1,0,1,1,1},{1,1,1,0,0},{1,0,0,0,1},{1,1,0,0,0},{1,0,0,0,1}};
cout<<max_size(m,r,c);
return 0;
}