大富翁游戏

Posted 顾文繁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大富翁游戏相关的知识,希望对你有一定的参考价值。

大富翁游戏规则如下

玩家起始会获得一定资本M金币

玩家每一次可以走一个格,或者跳两个格;走一格耗费2个金币能量;跳两个格,耗费3个金币能量;金币只有满足能量消耗时,才能继续往下走

玩家每走到一个格,会得到这个格的奖励,每个格的奖励金币数为非负整数

当玩家走到这个格后,总金币数不足以支持下一步金币消耗时,则不能继续往下走,游戏结束

玩家第一步可以选择走一步进第1格或者跳2步进第2格起始,玩家可以选择在任意一格结束游戏
问玩家游戏中,最多能得到多少个金币?

这是一个典型的动态规划问题。动态转移方程的总体思路就是,判断前一步和前两步的花费,奖励和损失哪个大。
dp[i]是走到第i步的最大盈利。
动态转移方程:dp[i] = max(max(0, dp[i-1] + nums[i-1]-2), dp[i-2] + nums[i] -3)
然后用一个变量记录最大值。

#include <bits/stdc++.h>
using namespace std;
int main()

    int M, num;
    cin >> M;
    vector<int> nums;
    while(cin >> num)
        nums.push_back(num);
    int n = nums.size();
    vector<int> dp(n+1, 0);
    dp[0] = M;
    int ret = 0;
    for(int i = 1;i <= n;i++)
    
        if(dp[i-1] > 1)
            dp[i] = max(0, dp[i-1] + nums[i-1] - 2);
        if(i-2 >= 0 && dp[i-2] > 2)
            dp[i] = max(dp[i], dp[i-2] + nums[i-1] - 3);
        ret = max(dp[i], ret);
    
    cout << ret << endl;
    return 0;

以上是关于大富翁游戏的主要内容,如果未能解决你的问题,请参考以下文章

飞行棋游戏情侣终极版内容,求iphone4蓝牙游戏,譬如:大富翁,飞行

Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3

ConfluxNews2023.3.29 Conflux联合Rivermen河里人等9个社区共同推出“河里大富翁”游戏

Java团队项目总结

《亿万富翁之路》破解游戏联机正版Steam

32岁开源IPO百亿富翁:13岁做游戏外挂,只爱写代码