分析

一句话:要装满的完全背包问题。
对比完全背包只有一点要改变:初始化为负无穷
传送门: https://buaacoding.cn/problem/101/index 装满的01背包,有何不同大家自己思考

代码样例

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
const int maxx = 400;
const int INF = -10000000;
int dp[maxx];
struct todo
{
	int d, h;
}TD[375];
int main()
{
	int n, m;
	while (~scanf("%d%d", &n, &m))
	{
		memset(dp, INF, sizeof(dp));
		for (int i = 0; i < n; i++)
			scanf("%d%d", &TD[i].d, &TD[i].h);
		dp[0] = 0;
		for (int i = 0; i < n; i++)
			for (int j = TD[i].d; j <= m; j++)
				if (dp[j] < dp[j - TD[i].d] + TD[i].h)
					dp[j] = dp[j - TD[i].d] + TD[i].h;
		if (dp[m] > 0)printf("%d\n", dp[m]);
		else printf("!\n");
	}

}

数据

由于后期数据问题,导致有初始化不是负无穷的同学一直没过,会适当补偿

相关文章:

  • 2021-08-15
  • 2021-08-05
  • 2022-12-23
  • 2021-05-16
  • 2022-01-06
  • 2022-01-09
  • 2021-06-15
  • 2021-07-30
猜你喜欢
  • 2021-05-30
  • 2022-02-27
  • 2021-07-30
  • 2021-12-21
  • 2021-11-15
  • 2021-07-30
  • 2021-12-08
相关资源
相似解决方案