动态规划—(背包问题)

简介: 动态规划—(背包问题)

动态规划与其他算法比较,大大减少了计算量,丰富了计算的结果,最适合解决最优解问题。今天讲的是背包问题。

1、0-1背包:

简介:有n件物品,总空间是w,前i件的容量是w[i],前i件的价值是v[i],那么所获取的最大容量是dp[w].

代码如下:

#include<stdio.h>
#include<string.h>
int f[201000];
int w[210000];
int v[210000];
int max(int n,int m)
{
  if(n>m)
    return n;
  else
    return m;
}
int main()
{
    int n,m;
    int i,j;
    while(~scanf("%d%d",&n,&m))
    {
      memset(f,0,sizeof(f));
      for(i=1;i<=n;i++)
          scanf("%d%d",&w[i],&v[i]);
      for(i=1;i<=n;i++)
          for(j=m;j>=w[i];j--)
          {
             int s=f[j-w[i]]+v[i];
             f[j]=max(f[j],s);
          }
      printf("%d\n",f[m]);
  }
    return 0;
}

2、完全背包:

简介:完全背包是有n种物品,总空间为w,每种的物品的件数是无限个,已知每种物品的容量为w[i],价值为v[i],如何满足最大价值。

代码如下:

#include <iostream>
#include <algorithm>
using namespace std;
int a[600],b[600],dp[1000005];
int main()
{
    int t,x,y,n;
    cin>>t;
    while(t--){
        int w;
        cin>>w;   //背包容量
        cin>>n;
        for(int i=0;i<n;i++)
            cin>>b[i]>>a[i];
        for(int i=0;i<=w;i++)  //初始化分两种情况:1、如果背包要求正好装满则初始化 f[0] = 0,  f[i]=INF;2、如果不需要正好装满 f[0~w] = 0; 
            dp[i]=0;
        for(int i=0;i<n;i++)
           for(int j=b[i];j<=w;j++)//j表示背包容量 
                dp[j]=max(dp[j],dp[j-b[i]]+a[i]);
   // for(int i=1;i<=w;i++)
        cout<<dp[w]<<endl;
    }
    return 0;
}

3、多重背包:

简介:多重背包就是0-1背包的扩展,0-1背包每一种物品一共有一件,多重背包每一种可能有多件,如一共有n种物品,每种物品的件数是bag[i],总空间是w,每一件容量是w[i],每一件价值是v[i].

代码如下:

#include<iostream>
#include<string.h>
#include <algorithm>
int v[1000],w[1000],c[1000],dp[1000];
using namespace std;
int main()
{
  int T;
  cin>>T;
  while(T--)
  {
    memset(dp,0,sizeof(dp));
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
      cin>>v[i]>>w[i]>>c[i];
    for(int i=1;i<=m;i++)
      for(int k=1;k<=c[i];k++)
        for(int j=n;j>=v[i];j--)
          dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
    cout<<dp[n]<<endl;
  }
  return 0;
}
相关文章
|
存储 算法
动态规划(背包问题)
动态规划(背包问题)
|
数据库连接 数据库 C++
|
6天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1912 6
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
4天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
642 110
|
14天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2527 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
14天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max-Preview深度全解析:2.4万亿参数旗舰MoE模型+Token Plan限时优惠完整落地指南
2026年7月,全新旗舰级混合专家大模型Qwen3.8-Max-Preview正式开放抢先体验,作为通义千问Qwen3系列规格最高、综合推理能力顶尖的新一代模型,该模型总参数量达到2.4万亿(2.4T),是当前线上可调用的原生多模态旗舰模型,综合推理水准对标海外顶级Fable 5模型,在复杂工程开发、长文档深度分析、多步骤智能体自治、跨境多语言创作、海量数据挖掘五大高难度业务场景实现跨越式性能提升。
1387 2
|
12天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
1361 2