类型题,01背包问题。
附一个自认为讲的很好的视频
https://www.bilibili.com/video/BV1kp4y1e794
参考代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<string> #include<cmath> #include<vector> #include<set> #include<sstream> #include<cstring> #include<utility> using namespace std; typedef long long ll; typedef long l; const int N = 110; int a[N][3],f[1100]; int main(){ int t,m; scanf("%d%d",&t,&m); for(int i=1;i<=m;i++)scanf("%d%d",&a[i][1],&a[i][2]); for(int i=1;i<=m;i++){ for(int j=t;j>=a[i][1];j--){ f[j]=max(f[j],f[j-a[i][1]]+a[i][2]); } } cout<<f[t]; }
0.0分
0 人评分