zoukankan      html  css  js  c++  java
  • 背包路径

    以 UVA 624 CD 为例,题为简单的01背包,重点看路径的记录部分。

    代码1:

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<vector>
    using namespace std;
    const int maxn=100010;
    int dp[maxn],path[maxn],ans[maxn],w[maxn];
    int main()
    {
      int V,n,i,j,cnt;
      while(~scanf("%d",&V))
      {
        {
         cnt=0;
         fill(path,path+maxn,-1);
         fill(dp,dp+maxn,0);
        }
        scanf("%d",&n);
        for(i=1;i<=n;i++) scanf("%d",&w[i]);
        for(i=1;i<=n;i++)
        {
          for(j=V;j>=w[i];j--)
           {
             if(dp[j]<dp[j-w[i]]+w[i])
              {
                dp[j]=dp[j-w[i]]+w[i];
                path[j]=i;
              }
           }
        }
        i=dp[V];
        while(i>0)
        {
          ans[cnt++]=w[path[i]];
          i-=w[path[i]];
        }
        for(i=cnt-1;i>=0;i--)printf("%d ",ans[i]);
        printf("sum:%d
    ",dp[V]);
      }
      return 0;
    }

    代码2:

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #include<vector>
    using namespace std;
    const int maxn=10000;
    int dp[maxn],path[25][maxn],ans[maxn],w[maxn];
    int main()
    {
      int V,n,i,j,cnt;
      while(~scanf("%d",&V))
      {
        {
         cnt=0;
         fill(path[0],path[0]+maxn*25,0);
         fill(dp,dp+maxn,0);
        }
        scanf("%d",&n);
        for(i=1;i<=n;i++) scanf("%d",&w[i]);
        for(i=1;i<=n;i++)
        {
          for(j=V;j>=w[i];j--)
           {
             if(dp[j]<dp[j-w[i]]+w[i])
              {
                dp[j]=dp[j-w[i]]+w[i];
                path[i][j]=1;
              }
           }
        }
        j=V;
        for(i=n;i>=1;i--)
        {
          if(path[i][j])
          {
            ans[cnt++]=w[i];
            j-=w[i] ;
          } 
        }
        for(i=cnt-1;i>=0;i--)printf("%d ",ans[i]);
        printf("sum:%d
    ",dp[V]);
      }
      return 0;
    }
    本博客仅为本人学习,总结,归纳,交流所用,若文章中存在错误或有不当之处,十分抱歉,劳烦指出,不胜感激!!!
  • 相关阅读:
    搜索框练习
    左侧菜单练习
    Maven Assembly插件介
    (总结)Nginx配置文件nginx.conf中文详解
    nginx、php-fpm、mysql用户权限解析
    全文检索引擎Solr的配置
    解决Discuz安装时报错“该函数需要 php.ini 中 allow_url_fopen 选项开启…”
    solr添加多个core
    精品站
    Win7下IIS的安装与配置
  • 原文地址:https://www.cnblogs.com/VividBinGo/p/11366691.html
Copyright © 2011-2022 走看看