题解 | #采药#

采药

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

#include<iostream>
using namespace std;

int dp[1001][101];
int w[101];
int v[101];

int main() {
	int n, m;
	while (cin >> n >> m) {
		for (int i = 0; i < m; i++) {
			cin >> w[i] >> v[i];
		}
		for (int i = 0; i <= n; i++) {
			dp[i][0] = 0;
		}
		for (int i = 0; i < m; i++) {
			dp[0][i] = 0;
		}
		// 考虑0-m-1个商品中的总价值最大
		for (int x = 1; x <= n; x++) {
			for (int y = 1; y <= m; y++) {
				if (x - w[y - 1] < 0)
				{
					dp[x][y] = dp[x][y - 1];
				}
				else {
					dp[x][y] = max(dp[x][y - 1], dp[x - w[y - 1]][y - 1] + v[y - 1]);
				}



			}
		}

		cout << dp[n][m] << endl;

	}

}

全部评论

相关推荐

星期一的大老师:项目描述 和 技术栈单开一栏;八股文:算法与数据结构,计算机网络一定要写,操作系统不了解可以不写;Linux命令,Git,Docker基础命令和基本使用一定要写,要有实际使用场景的解决经验;项目的八股文上:redis 解决 缓存雪崩,缓存击穿,缓存穿透的解决方案,一个问题的不同方案可以一起用,不需要重复在两个项目写。第二个项目换一个。小厂可以投一投
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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