[貪心]P1049 裝箱問題

裝箱問題

題目描述
有一個箱子容量爲V(正整數,0≤V≤20000),同時有n個物品(0<n≤30),每個物品有一個體積(正整數)。

要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間爲最小。

輸入格式
1個整數,表示箱子容量

1個整數,表示有n個物品

接下來n行,分別表示這n個物品的各自體積

輸出格式
1個整數,表示箱子剩餘空間。

輸入輸出樣例

輸入 #1
24
6
8
3
12
7
9
7
輸出 #1
0

題目解析
這種題的數據很水,一個快排加一個循環直接AC

AC完整程序

#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
    int v,a[30],n,v1;
    scanf("%d%d",&v,&n);
    for(int i=0;i<n;++i){
        scanf("%d",&a[i]); 
    }
    v1=v;sort(a,a+n);
    for(int i=n-1;i>=0;--i){	
        if((v-a[i])>=0){
            v-=a[i];
        }
        if((v1-a[n-i-1])>=0){
            v1-=a[n-i-1];
        }
    }
    if(v1>v)printf("%d",v);
     else printf("%d",v1);
     return 0;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章