1. 程式人生 > >貪心演算法——加勒比海盜:最優裝載問題

貪心演算法——加勒比海盜:最優裝載問題

問題描述:

有一天,海盜們截獲了一艘裝滿各種各樣古董的貨船,每一件古董都價值連城,一旦打碎就失去了它的價值。雖然海盜船足夠大,但載重量為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;
}