/*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; }