首页 > 其他 > 详细

会超时的dfs01背包+快一点的一维DP01背包

时间:2017-05-05 21:36:12      阅读:407      评论:0      收藏:0      [点我收藏+]

( ⊙ o ⊙ ) 题目:

技术分享

(⊙v⊙),代码:

1.dfs

 

//会超时!!!! 
#include<iostream>
#include<cstdio>
using namespace std;

int n,t,ans;
int w[1003],v[1003];

void dfs(int x,int val,int left) {
    if(x == n+1){
        ans = max(ans,val);
        return ;
    }
    dfs(x+1,val,left);
    if(left >= w[x]) dfs(x+1,val + v[x],left - w[x]);
}

int main() {
    cin>>n>>t;
    for(int i=1; i<=n; i++) cin>>w[i]>>v[i];
    dfs(1,0,t);
    cout<<ans<<endl;
    return 0;
}

 

2.dp

 

#include<iostream>
#include<cstdio>
using namespace std;

int n,V;
int val[1333],wight[1333],f[1333];

int main() {
    cin>>V>>n;
    for(int i=1; i<=n; i++) {
        cin>>wight[i]>>val[i];
    }
    for(int i=1; i<=n; i++) {
        for(int j=V; j>=0; j--) {
            if(j >= wight[i])
            f[j] = max(f[j],f[j-wight[i]]+val[i]);
        }
    }
    cout<<f[V]<<endl;
    return 0;
}

 

会超时的dfs01背包+快一点的一维DP01背包

原文:http://www.cnblogs.com/wsdestdq/p/6814882.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!