2.2加勒比海盜船 最優裝載問題
阿新 • • 發佈:2018-11-25
在北美洲東南部,有一片神祕的海域,那裡碧海藍天、陽光明媚,這正是傳說中海盜最活躍的加勒比海(Caribbean Sea)。17世紀時,這裡更是歐洲大陸的商旅艦隊到達美洲的必經之地,所以當時的海盜活動非常猖獗,海盜不僅攻擊過往商人,甚至攻擊英國皇家艦……
有一天,海盜們截獲了一艘裝滿各種各樣古董的貨船,每一件古董都價值連城,一旦打碎就失去了它的價值。雖然海盜船足夠大,但載重量為C,每件古董的重量為w,海盜們該如何把儘可能多數量的寶貝裝上海盜船呢?
解題思路:
先對資料進行排序,再按照貪心策略,選擇重量最小的古董放入
解題程式碼:
#include <stdio.h> int main(){ int MAX=30; int i,j,k,a=0,b=0,t; int arr[8]={4,10,7,11,3,5,14,2}; /*for(i=0;i<8;i++){ scanf("%d",&arr[i]); }*/ for(i=0;i<8;i++){ for(j=i;j<8;j++){ if(arr[i]>arr[j]){ t=arr[i]; arr[i]=arr[j]; arr[j]=t; } } } while(MAX>0){ MAX=MAX-arr[a++]; b++; printf("第%d次%d-%d=%d\n",b,MAX+arr[b-1],arr[a-1],MAX+arr[b-1]-arr[a-1]); } MAX==0?printf("%d",b):printf("%d",b-1); return 0; }