Leetcode 304. 2次元領域と検索マトリックス不変(41日目)-動的計画法の学習期間

元のタイトル

ここに画像の説明を挿入



コードの実装(最初のブラシの自己解決)

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);
}

/**
 * Your NumMatrix struct will be instantiated and called as such:
 * NumMatrix* obj = numMatrixCreate(matrix, matrixSize, matrixColSize);
 * int param_1 = numMatrixSumRegion(obj, row1, col1, row2, col2);
 
 * numMatrixFree(obj);
*/

おすすめ

転載: blog.csdn.net/qq_37500516/article/details/113737915