动态规划问题

动态规划问题典型实例:

1. 有一个箱子的容量为v(正整数,0<=v<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。要求从n个物品中,任取若干个装入箱内,使得箱子的剩余空间为最小。

输入为 :箱子的容量,物品的种类,物品的体积

输出为: 箱子的剩余空间

#include "iostream"
using namespace std;
#define MAX 20000    //定义总空间的最大值
static int Min[MAX]; //总空间对应的剩余最小值

int minVolume(int *volume,int sum,int num,int i=0)
{
    if(sum==0)
        return 0;
    if(i>=num||sum<volume[i])
        return sum;
    return min(minVolume(volume,sum,num,i+1),minVolume(volume,sum-volume[i],num,i+1));
}
int main()
{
    int sum,num;
    int volume[30];
    Min[0]=0;
    cin>>sum;
    cin>>num;
    for(int i=0;i<num;i++)
    {
        cin>>volume[i];
    }
    cout<<minVolume(volume,sum,num);
    return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值