1 solutions

  • 0
    @ 2024-9-10 20:11:25
    #include<bits/stdc++.h>
    
    using namespace std;
    int f[1001][1001];
    int w[100010],v[100010];
    int main(){
    	int n,m;
    	cin>>m>>n;
    	//01背包 
    	for(int i=1;i<=n;i++){
    		cin>>w[i]>>v[i];//重量与价值 
    	} 
    	for(int i=1;i<=n;i++){
    		for(int j=m;j>=1;j--){//背包大小(从大到小) 
    			f[i][j]=f[i-1][j];//默认不选 
    			if(j>=w[i]){//如果装的下,尝试放入 
    				f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+w[i]*v[i]);
    			}
    		}
    	} 
    	cout<<f[n][m];
    	return 0;
    } 
    
    • 1

    Information

    ID
    60
    Time
    1000ms
    Memory
    64MiB
    Difficulty
    2
    Tags
    # Submissions
    14
    Accepted
    9
    Uploaded By