元のタイトル
コードの実装(最初のブラシの自己解決)
typedef struct {
int** dp;
} NumMatrix;
NumMatrix* numMatrixCreate(int** matrix, int matrixSize, int* matrixColSize) {
NumMatrix* obj = (NumMatrix*)malloc(sizeof(NumMatrix));
obj->dp = (int**)malloc(sizeof(int*) * matrixSize);
int i,j;
for(i=0;i<matrixSize;i++)
{
obj->dp[i] = (int*)malloc(sizeof(int) * matrixColSize[0]);
memcpy(obj->dp[i],matrix[i],sizeof(int) * matrixColSize[0]);
if(i)
{
for(j=0;j<matrixColSize[0];j++)
obj->dp[i][j] += obj->dp[i-1][j];
}
}
return obj;
}
int numMatrixSumRegion(NumMatrix* obj, int row1, int col1, int row2, int col2) {
int i,sum = 0;
for(i=col1;i<=col2;i++)
{
if(row1)
sum += (obj->dp[row2][i] - obj->dp[row1-1][i]);
else
sum += obj->dp[row2][i];
}
return sum;
}
void numMatrixFree(NumMatrix* obj) {
free(obj);
}