题解 | #采药#

采药

https://www.nowcoder.com/practice/d7c03b114f0541dd8e32ce9987326c16

//标准的0/1背包,模板题
#include<iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include<vector>
using namespace std;

const int MAXN = 120;
int t_cost[MAXN];
int value[MAXN];
int dp_result[120][1200];

int dp(int m, int t)
{
	if (m == -1||t==0)
	{
		return 0;
	}
	else if (dp_result[m][t] != 0)
	{
		return dp_result[m][t];
	}
	else
	{
		if (t >= t_cost[m])
		{

			dp_result[m][t] = max(dp(m - 1, t), dp(m - 1, t - t_cost[m])+value[m]);
			return dp_result[m][t];
		}
		else
		{
			dp_result[m][t] = dp(m - 1, t);
			return dp_result[m][t];
		}
	}
}
int main() 
{
	fill(dp_result[0], dp_result[0] + 120 * 1200, 0);
	int T, M;
	scanf("%d %d", &T, &M);
	for (int i = 0; i < M; i++)
	{
		scanf("%d %d", &t_cost[i], &value[i]);

	}
	cout << dp(M - 1, T);


}

全部评论

相关推荐

10-09 16:23
门头沟学院 Java
点赞 评论 收藏
分享
用微笑面对困难:这里面最强的是驾驶证了,可以入职美团大厂,然后直接开启黄马褂人生
点赞 评论 收藏
分享
皮格吉:不,有的厂子面试无手撕,可以试试。都是一边学一边面。哪有真正准备好的时候,别放弃
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务