動態規劃問題

動態規劃問題典型實例:

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;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章