动态规划-1620. 收集硬币
2020-04-08 07:45:18 问题描述: 给定一个 n * m 个的矩阵,矩阵的每个位置有一定数量的硬币,你从 (0,0) 位置出发,每次只能 往右 或者 往下 走,当他经过某个格子的时候,可以得到这个格子上的所有硬币,当它走到第 (n-1,M-1) 位置时游戏结束,在游戏开始前,你有 ķ 次机会,可以交换某两个格子中的硬币数量中,k次机会不一定要使用完,求从(0,0)走到第(n-1,M-1)所能得到的最大的硬币数量。 样例 输入: matrix = [[9,9,9,0,0],[0,0,9,0,0],[0,0,0,0,0],[0,0,9,0,0],[9,0,9,9,9]] k = 1 输出:81 注意事项 2≤n,m≤50 0<=k<=20 0<=matrix[I][j]<=1000000 问题求解: int nums[55]; int dp[55][55][25][25]; int collectingCoins(vector<vector<int>> &matrix, int k) { // Write your code here int n = matrix.size(); int m = matrix[0].size(); memset(dp, -0x3f,sizeof(dp)); dp[0][0][0][0] = matrix[0][0], dp[0][0]