编辑代码

#include <iostream>
#include <algorithm>

const int MAX_N = 100;  
int dp[MAX_N][MAX_N];    // 存储最大硬币数的数组

// 找出机器人能找到的最大硬币数
int findMaxCoins(int board[MAX_N][MAX_N], int n, int m) {
    // 初始化第一行和第一列
    dp[0][0] = board[0][0];
    for (int i = 1; i < n; ++i) {
        dp[i][0] = dp[i - 1][0] + board[i][0];
    }
    for (int j = 1; j < m; ++j) {
        dp[0][j] = dp[0][j - 1] + board[0][j];
    }

    // 填充dp数组
    for (int i = 1; i < n; ++i) {
        for (int j = 1; j < m; ++j) {
            dp[i][j] = std::max(dp[i - 1][j], dp[i][j - 1]) + board[i][j];
        }
    }
    // 返回最大硬币数
    return dp[n - 1][m - 1];
}

int main() {
    
    int board[MAX_N][MAX_N] = {
        {1, 0, 0},
        {0, 1, 1},
        {1, 0, 1}
    };

    // 调用
    int maxCoins = findMaxCoins(board, 3, 3);
    // 输出最大硬币数
    std::cout << "收集最大硬币数是: " << maxCoins << std::endl;

    return 0;
}