动态规划问题典型实例:
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;
}