1. 程式人生 > >2.2加勒比海盜船 最優裝載問題

2.2加勒比海盜船 最優裝載問題

在北美洲東南部,有一片神祕的海域,那裡碧海藍天、陽光明媚,這正是傳說中海盜最活躍的加勒比海(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;
}