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