01背包模板

01背包模板_第1张图片

 

#include
#include 
using namespace std;

int dp(int n, int m, int v[], int w[])
{
int sb[1000][1000];
	for (int i = 0;i <= n;i++)
		sb[i][0] = 0;
	for (int j = 0;j <= n;j++)
		sb[0][j] = 0;
	for (int i = 1;i <= n;i++)
	{
		for (int j = 0;j <= m;j++)
		{
			if (j < w[i])
				sb[i][j] = sb[i - 1][j];
			else
			{
				sb[i][j] = max(sb[i - 1][j], sb[i - 1][j - w[i]] + v[i]);
			}

		}
	}
	return sb[n][m];

}
int main()
{
	int n, m, v[101], w[101];
	cin >> n >> m;//n为物品个数,m为背包容量,w为物品重量,v为物品价值 
	for (int i = 1;i <= n;i++)
	{
		cin >> w[i] >> v[i];
	}

	cout << dp(n, m, v, w);
	return 0;
}

你可能感兴趣的:(算法,c++)