梅贾的窃魂卷(吉首大学新星杯 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题)的主要内容,如果未能解决你的问题,请参考以下文章

梅贾的窃魂卷(吉首大学新星杯 C题)

吉首大学第八届“新星杯”大学生程序设计大赛(题解+源码)

吉首大学第九届"新星杯"大学生程序设计大赛

EDG夺冠,Python分析一波B站评论,总结:EDG,nb

说能过那是假的(吉首大学2019程序设计校赛)c++

第七届“新星杯”程序设计大赛--补题简要题解及思路(11/12)