動態規劃問題典型實例:
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;
}