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