编辑代码

#include <stdio.h>

// 返回两个整数中的最大值
int max(int a, int b) {
    return (a > b) ? a : b;
}

// 动态规划解决银币收集问题
int collectCoins(int coins[], int n) {
    // 创建一个数组来存储最大收益
    int dp[n];
    dp[0] = coins[0];
    dp[1] = max(coins[0], coins[1]);

    for (int i = 2; i < n; i++) {
        dp[i] = max(coins[i] + dp[i - 2], dp[i - 1]);
    }

    return dp[n - 1];
}

int main() {
    int coins[] = {1, 2, 3, 1, 5}; // 每个位置的银币数量
    int n = sizeof(coins) / sizeof(coins[0]); // 位置的数量

    int maxCoins = collectCoins(coins, n);
    printf("收集银币的最大数量为: %d\n", maxCoins);

    return 0;
}