zoukankan      html  css  js  c++  java
  • 01背包-记忆化搜索到成型的DP

    记忆化搜索

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int n,W;
    int dp[105][10005];
    int w[105],v[105];
    
    int rec(int i,int j){
    	if(dp[i][j] >= 0){
    		return dp[i][j];
    	}
    	int res;
    	if(i == n){
    		res = 0;
    	}else if(j < w[i]){
    		res = rec(i + 1,j);
    	}else{
    		res = max(rec(i + 1,j),rec(i + 1,j - w[i])+v[i]);
    	}
    	
    	return dp[i][j] = res;
    }
    
    int main()
    {
    	scanf("%d %d",&n,&W);
    	
    	for(int i=0;i<n;i++){
    		scanf("%d %d",&w[i],&v[i]);	
    	}
    	
    	memset(dp,-1,sizeof(dp));
    	
    	cout<<rec(0,W)<<endl;
    	
    	
    	return 0;
    }

    二维DP

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    int n,W;
    int dp[105][10005];
    int w[105],v[105];
    
    int main()
    {
    	scanf("%d %d",&n,&W);
    	
    	for(int i=0;i<n;i++){
    		scanf("%d %d",&w[i],&v[i]);	
    	}
    	
    	memset(dp,0,sizeof(dp));
    	
    	for(int i=n-1;i>=0;i--){
    		for(int j=0;j<=W;j++){
    			if(j < w[i]){
    				dp[i][j] = dp[i + 1][j];
    			}else{
    				dp[i][j] = max(dp[i+1][j],dp[i+1][j-w[i]]+v[i]);
    			}
    		}
    	}
    	
    	cout<<dp[0][W]<<endl;
    	
    	return 0;
    }

  • 相关阅读:
    视音频开发测试文件下载
    H.264 中的Annex B格式和AVCC格式
    FFmpeg——命令笔记
    Gamma 矫正
    头文件 <string.h> <cstring> <string> 区别
    Serializable
    Oracle学习
    JDBC
    Servlet为主理解cookie,session,filter
    javaweb复习-环境篇
  • 原文地址:https://www.cnblogs.com/pearfl/p/10733160.html
Copyright © 2011-2022 走看看