貪心演算法——加勒比海盜:最優裝載問題
阿新 • • 發佈:2018-12-12
問題描述:
有一天,海盜們截獲了一艘裝滿各種各樣古董的貨船,每一件古董都價值連城,一旦打碎就失去了它的價值。雖然海盜船足夠大,但載重量為C,每件古董的重量為wi,海盜們該如何把儘可能多數量的寶貝裝上海盜船呢?
程式碼實現
#include<iostream> // 呼叫sort函式的標頭檔案 #include<algorithm> using namespace std; // C++定義符號常量 const int N = 1000005; double w[N]; int main() { double c; int n; cout<<"請輸入載重量c及古董個數n:"<<endl; cin>>c>>n; cout<<"請輸入每個古董的重量,用空格分開:"<<endl; for(int i=0;i<n;i++) { cin>>w[i]; } //按古董重量升序排序 sort(w,w+n); //tmp為已裝載到船上的古董重量,ans為已裝載的古董個數 double tmp=0.0; int ans=0; for(int i=0;i<n;i++) { tmp+=w[i]; if(tmp<=c) ans++; else break; } cout<<"能裝入的古董最大數量為Ans="; cout<<ans<<endl; return 0; }