这一题有两种思路,但只有一种代码
知道是为啥吗?
第一种是错的
方法一:贪心,60分(不附程序了)
方法二:动态规划(回头望月)先找状态转移方程
#include<bits/stdc++.h>
using namespace std;
int w[101],v[101];
int f[101][1001];
int main(){
int t,m;
cin>>t>>m;
for(int i=1;i<=m;i++)
cin>>w[i]>>v[i];
for(int i=1;i<=m;i++)
for(int j=t;j>=0;j--)
if(j>=w[i])
f[i][j]=max(f[i-1][j-w[i]]+v[i],f[i-1][j]);
else
f[i][j]=f[i-1][j];
cout<<f[m][t];
return 0;
}