題目描述:
在一個m×n的棋盤的每一格都放有一個禮物,每個禮物都有一定的價值(價值大于0)。你可以從棋盤的左上角開始拿格子里的禮物,并每次向右或者向下移動一格直到到達棋盤的右下角。給定一個棋盤及其上面的禮物,請計算你最多能拿到多少價值的禮物?
代碼很簡單
int* maxValues = new int[cols];
for(int i = 0; i < rows; ++i){for(int j = 0; j < cols; ++j) {int left = 0;int up = 0;if(i > 0)up = maxValues[j];if(j > 0)left = maxValues[j - 1];maxValues[j] = std::max(left, up) + values[i * cols + j];}
}int maxValue = maxValues[cols - 1];
delete[] maxValues;
return maxValue;