AcWing 426. 开心的金明
原题链接
简单
作者:
minux
,
2020-05-11 16:14:56
,
所有人可见
,
阅读 637
c++ 0-1背包问题思路求解
#include <bits/stdc++.h>
using namespace std;
const int N=30005;
int n,m;
int f[N];
int main(){
memset(f, 0x00, sizeof f);
cin>>m>>n;
for(int i=0; i<n; ++i){
int v, w;
cin>>v>>w;
for(int j=m; j>=v; --j)
f[j]=max(f[j], f[j-v]+v*w);
}
cout<<f[m]<<endl;
return 0;
}
python
class Solution:
def main(self, n:int, m:int):
f=[0 for _ in range(m+1)]
for i in range(n):
v, w=map(int, input().split())
for j in range(v, m+1)[::-1]:
f[j]=max(f[j], f[j-v]+v*w)
print(f[m])
if __name__ == '__main__':
m, n=map(int, input().split())
sol=Solution()
sol.main(n, m)