• HDU 2602 Bone Collector(dp之01背包问题)


    HDU 2602 Bone Collector(dp之01背包问题)

    题目描述:

    典型的01背包问题。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #define N 1010
    using namespace std; 
    int dp[N][N];  
    int temp;
    int value[N] ;
    int volume[N];
    int T;
    int number , volumeSum ;
    
    void init()
    {
    	memset( value, 0 , sizeof(value) );
    	memset( volume, 0 , sizeof(volume) );
    	memset( dp, 0 , sizeof(dp) );
    }
    
    void input()
    {
    	cin >> number >> volumeSum;
    	for ( int i = 1 ; i <= number ; i++ )	
    		scanf("%d", &value[i]);
    	for ( int i = 1 ; i <= number ; i++ )
    		scanf("%d", &volume[i]);
    }
    
    int knapsack( int number ,int volumeSum)
    {   
    
        for( int i = 1 ; i <= number ; i++ )  
            for( int j = 0 ; j <= volumeSum ; j++ )  
    	    {  
    	        if (volume[i] > j)	
    			{
    				dp[i][j] = dp[i-1][j];
    				continue;	
    			}
    			else if ( dp[i-1][j-volume[i]] + value[i] > dp[i-1][j]) 
    			{
    				dp[i][j]=dp[i-1][j-volume[i]]+value[i];
    				continue; 
    			}
    	        else  
    	        dp [i][j] = dp [i-1][j];  
    	    }
    	return dp[number][volumeSum];    
    }  
                
    int main()
    {
    
    	cin >> T;
    	while ( T-- )
    	{
    		init();
    
    		input();
      
    	    cout << knapsack( number , volumeSum ) << endl;	
    	}
        return 0; 
    }  
    透过泪水看到希望
  • 相关阅读:
    var 和 let 的区别
    js初步认识变量
    弹性布局
    盒模型
    多重样式优先级深入概念
    层叠机制--比较特殊性
    anroid抓包工具tcpdump的用法
    linux find grep组合使用
    Protect Broadcast 保护广播
    android:exported 属性详解
  • 原文地址:https://www.cnblogs.com/ronnielee/p/9495146.html
Copyright © 2020-2023  润新知