社区讨论

这道题怎么做求助站外题

学术版参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo91h9i2
此快照首次捕获于
2023/10/28 04:01
2 年前
此快照最后确认于
2023/10/28 04:01
2 年前
查看原帖
没有网址,只好手打
一名种菜的农民伯伯。需要在给定的时间内完成种菜,现有m种不同的蔬菜提供给农民伯伯选择,且每种蔬菜种植花费的时间不同,每种蔬菜成熟后售卖的价值也不同。 要求: 1.在限定的总时间内进行蔬菜种植,并且种植蔬菜的种类不能超出限制的数量; 2.选择最优的种植方案使得蔬菜成熟后售卖的总价值最大(可选择不同的蔬菜种植)。 例如: 给定的总时间限制为55,种植蔬菜的种类限制为3; 3种蔬菜,种菜的花费时间及售卖价格分别为:第一种21和9,第二种20和2,第三种30和21。 最优的种植方案是选择种植第一种和第三种,两种蔬菜种植总时间30+21,未超过总时间限制55。所种植蔬菜为两种,也未超过种类限制的3种。最大总价值为9+21=30,这个方案是最优的。
这是我的代码(明显有很多错)
CPP
#include<bits/stdc++.h>
using namespace std;
int w[10005],v[10005],b[10005];
int main() 
{
	int n,m;
	cin >> m >> n;
	for (int i=1;i<=n;i++)
	{
		cin>>w[i]>>v[i];
	}
	for (int i=1;i<=n;i++)
	{
		for (int j=w[i];j<=m;j++)
		{
			b[j]=max(b[j],b[j-w[i]]+v[i]);
		}
	}
	cout<<b[m];
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...