/*C语言解法*/
int** imageSmoother(int** M, int MSize, int* MColSize, int* returnSize, int** returnColumnSizes){
int row,col,sum,count;
int** arr = (int**)calloc(MSize,sizeof(int*));
for (row=0; row<MSize; row++)
{
arr[row] = (int*)calloc(*MColSize,sizeof(int));
for (col=0; col<MColSize[row]; col++)
{
count=1;
sum=M[row][col];
if (col-1>=0)
{
sum += M[row][col-1];
count++;
}
if (col-1>=0 && row-1>=0)
{
sum += M[row-1][col-1];
count++;
}
if (row-1>=0)
{
sum += M[row-1][col];
count++;
}
if (col+1<*MColSize && row-1>=0)
{
sum += M[row-1][col+1];
count++;
}
if (col+1<*MColSize)
{
sum += M[row][col+1];
count++;
}
if (col+1<*MColSize && row+1<MSize)
{
sum += M[row+1][col+1];
count++;
}
if (row+1<MSize)
{
sum += M[row+1][col];
count++;
}
if (col-1>=0 && row+1<MSize)
{
sum += M[row+1][col-1];
count++;
}
arr[row][col] = sum/count;
}
}
*returnColumnSizes = MColSize;
*returnSize=MSize;
return arr;
}