(腾讯笔试)01背包

#include <cstdio>  
#include <iostream>  
#include <algorithm> 
#include <sstream> 
#include <vector>

#define N_MAX 205
#define INF (0x3f3f3f3f)

using namespace std;

long long Data[1001][1001];
vector<long long>Size;
vector<long long>Val;

int main()
{
	int N, M;
	cin >> N >> M;	//存储容量、电影数量
	long long save;
	Size.push_back(0);
	Val.push_back(0);
	for (int i = 0; i < M; ++i)
	{
		cin >> save;
		Size.push_back(save);
	}
	for (int i = 0; i < M; ++i)
	{
		cin >> save;
		Val.push_back(save);
	}
	Data[0][0] = 0;
	for (int i = 1; i <= M; ++i)
	{
		for (int j = 1; j <= N; ++j)
		{
			if (j > Size[i])
				Data[i][j] = max(Data[i - 1][j], Data[i - 1][j - Size[i]] + Val[i]);
			else
				Data[i][j] = Data[i - 1][j];
		}
	}
	cout << Data[M][N];

	return 0;
}
发布了104 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Yanpr919/article/details/100672360