错了一个点
查看原帖
错了一个点
677581
_Glassy_Sky_楼主2022/12/13 13:27
#include<bits/stdc++.h>
using namespace std;
int w[101], c[101];
int f[1001][1001];
int main()
{
	int n, m;
	cin >> n >> m;
	for(int i = 1; i <= m; i ++)
	{
		cin >> w[i] >> c[i];
		c[i] *= w[i];//计算乘积 
	}
	for(int i = 1; i <= m; i ++)
		for(int v = n; v > 0; v --)
			if(w[i] <= v)
				f[i][v] = max(f[i - 1][v], f[i - 1][v - w[i]] + c[i]);//选择较大者 
			else
				f[i][v] = f[i - 1][v];
	cout << f[m][n];//f[m][n]为最优解 
	return 0;
}

2022/12/13 13:27
加载中...