梅贾的窃魂卷(吉首大学新星杯 C题)
Posted WINNER_QIUQIU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了梅贾的窃魂卷(吉首大学新星杯 C题)相关的知识,希望对你有一定的参考价值。
梅贾的窃魂卷
题目描述:
Scout 在开局 7 分钟就买了一本梅贾的窃魂卷,俗称“杀人书”,杀人书(一共 25 层 被动)的功效是击杀一名敌方英雄就增加 5 层被动,获得一次助攻会增加 2 层被动, 而被击杀一次会掉 10 层被动,掉到 0 层不会再掉,scout 杀人书初始为 0 层。现在 已知在游戏结束时 scout 的杀人书为 25 层,给出 scout 的击杀数 k,死亡数 d,以 及助攻数 a,请问这三种字母共有多少种出现顺序能让 scout 最后的杀人书为 25 层, 超过 25 层也为 25 层。
输入
输入三个整数 k(0<k<=10),d(0<=d<=5),a(0<a<=5)
输出
输出一个整数,符合题意的排列数
样例输入: 3 1 5
样例输出: 56
提示样例中 dkkkaaaaa 和 dkakakaaa 为不同的两种
题目分类: 动态规划
代码如下:
#include<iostream>
using namespace std;
int dp[15][10][10][30];
int main()
int k, d, a;
int ans = 0;
cin >> k >> d >> a;
dp[0][0][0][0] = 1;
for (int i = 0; i <= k; i++)//击杀数
for (int j = 0; j <= d; j++)//死亡数
for (int k = 0; k <= a; k++)//辅助数
for (int v = 0; v <= 25; v++)//层数
//记录到当前状态共有多少种组合的方式
dp[i + 1][j][k][min(25, v + 5)] += dp[i][j][k][v];//若击杀数增加1,则层数加5,超过25层按25层记
dp[i][j + 1][k][max(0, v - 10)] += dp[i][j][k][v];//若死亡数增加1,则层数减5,小于0层按0层记
dp[i][j][k + 1][min(25, v + 2)] += dp[i][j][k][v];//若辅助数增加1,层数加2
//当k,d,a次数用完且层数等于25,记录答案
for (int i = 25; i <= 25; i++)
ans += dp[k][d][a][i];
cout << ans;
return 0;
思路来源:https://www.cnblogs.com/1436177712qqcom/p/15677755.html
以上是关于梅贾的窃魂卷(吉首大学新星杯 C题)的主要内容,如果未能解决你的问题,请参考以下文章
EDG夺冠,Python分析一波B站评论,总结:EDG,nb