zoukankan      html  css  js  c++  java
  • 动态规划解决01背包问题

    // 动态规划解决01背包问题
    #include <iostream>
    #include <iomanip>
    //问题描述 五个物体 背包容量W=17
    //体积数据 v[5]={3,4,7,8,9}
    //价值数据 w[5]={4,5,10,11,13}
    using namespace std;
    void fn(int k,int m);
    int w[6]={0,4,5,10,11,13};//价值
    int v[6]={0,3,4,7,8,9};//体积
    int x[6];
    int a[6][18];
    int i,j,k,m;
    int main ()
    {

    //初始化 第0行0列赋值为0
    for ( i=0;i<=5;i++) a[i][0]=0;
    for ( j=0;j<=5;j++) a[0][j]=0;


    for ( i=1;i<=5;i++) //i表示第几个物品
    { for (j=1;j<=17;j++) //j表示容量大小
    {
    if (v[i]>j)
    a[i][j]=a[i-1][j];
    else
    a[i][j]=(a[i-1][j]>a[i-1][j-v[i]]+w[i])? a[i-1][j]:a[i-1][j-v[i]]+w[i];

    }
    }
    //输出数据表用于观察
    for ( i=0;i<=5;i++) //i表示第几个物品
    {
    for (j=0;j<=17;j++) //j表示容量大小
    { cout<<setw(3)<<a[i][j];}
    cout<<endl;
    }

    //找出装入的物体,输出到x[]
    i=5;
    j=17;
    while (i>=0&&j>=0)
    {
    if (a[i][j]==a[i-1][j])
    {
    x[i]=0;
    i--;
    }
    else
    {
    x[i]=1;
    i--;
    j=j-v[i];
    }
    }
    //输出x[]
    cout<<endl;
    for (int i=1;i<=5;i++)
    cout<<x[i]<<" ";

    return 0;
    }
  • 相关阅读:
    项目质量管理
    项目成本管理
    项目进度管理
    项目范围管理
    项目整体管理
    项目立项管理
    信息系统项目管理基础
    信息化和信息系统
    linux(3)
    Patorjk
  • 原文地址:https://www.cnblogs.com/wangcan/p/2398562.html
Copyright © 2011-2022 走看看