爱奇艺编程题

1、炉石传说

时间限制:c/c++语言1000MS;其他语言3000MS

内存限制:c/c++语言65536KB;其他语言589824KB

题目描述:

小明喜欢玩一款叫做炉石传说的卡牌游戏,游戏规则如下,玩家拥有N颗水晶和M张卡牌,每张卡牌的使用会消耗a颗水晶并且造成b的伤害值,请你帮小明算一下该如何使用手上的卡牌,在消耗小于等于N颗水晶的前提下造成最多的伤害值之和。

 

输入:

所有输入均为32位正整数
第一行N M
第二行到第M+1行 ai bi

输出:

对于每个测试实例,要求输出在消耗小于等于N颗水晶的前提下能造成的最多的伤害值之和;每个测试实例的输出占一行。

样例输入:

10 4
5 7
2 3
8 10
3 4

样例输出:

14

思路:背包问题


c++代码:

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;

int main(){
	int n,m;  //n颗水晶,m张卡牌
	while(cin>>n>>m){
		vector<int> a;   //消耗的水晶 
		vector<int> b;  //b伤害值 
		for(int i=0;i<m; i++){
			int tmp;
			cin>>tmp;
			a.push_back(tmp);
			cin>>tmp;
			b.push_back(tmp);
		} //输入数据
		
		vector<int> dp(n+1,0);
		int res=-1;
		for(int i=0;i<m;i++){
			for(int j=n;j>=a[i];j--){
				dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
				res=max(res,dp[j]);
			}
		}
		 cout<<res<<endl;
	} //while
	return 0;
}




2、赛车手

题目描述:

小奇是一名赛车手,他正在准备一次赛车比赛,这次比赛总共需要在赛场中跑n圈,而赛车手需要每隔一段时间就进站一次,进行换胎和加油等工作。假定小奇的赛车最多跑3圈就必须进站一次,问他总共有多少种进站策略?

 

输入:

输入1个整数,表示比赛的圈数。它的值大于1小于30.

输出:

为1个数字,表示进站策略的数量。

样例输入:

3

样例输出:

4


思路:dp问题,类似于leetcode的377题http://blog.csdn.net/xiaoquantouer/article/details/52222437?locationNum=1


c++代码

#include<iostream>
#include<vector>
using namespace std;
int main(){
	int n; //表示比赛的圈数
	while(cin>>n){
		vector<int> nums;
		nums.push_back(1);
		nums.push_back(2);
		nums.push_back(3);
		vector<int> dp(n+1, 0);
		dp[0]=1;
		for(int i=1;i<=n;i++){
			for(int j=0; j<nums.size(); j++){
				if(i>=nums[j]){
					dp[i]+=dp[i-nums[j]];
				}
			}
		}//for
		cout<<dp[n]<<endl;
	} //while
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值