1. 程式人生 > >最優裝載問題(貪心基礎)

最優裝載問題(貪心基礎)

最優裝載問題。給出n個物體,第i個物體重量為w[i]。選擇儘量多的物體,使得總重量不超過C。
【分析】
由於只關心物體的數量,所有裝重的沒有裝輕的划算。只需把所有物體按重量從小到大排序,一次選擇每個物體,直到裝不下為止。這是一種典型的貪心演算法,只顧眼前,但能得到最優解。

#include <iostream>
using namespace std;

//交換 
template <class type>
void swap2(type &x, type &y) {
    type temp = x;
    x = y;
    y = temp;
}

//氣泡排序 
void sort2(int *box, int n) { for (int i = 0; i < n; i++) { for (int j = i; j < n; j++) { if (box[i] > box[j]) { swap2(box[i],box[j]); } } } } //貪心演算法裝載 void loading(int *box, int *r, int c, int n) { for (int i = 0; i < n; i++) { if
(c-box[i] >= 0){ c -= box[i]; r[i] = box[i]; } } } int main() { int c = 100; //載重容量 int box[6]={100,20,25,25,20,20}; //重量 int result[6] = {0}; sort2(box,6); loading(box,result,c,6); for (int i = 0; i < 6; i++) { if (result[i] == 0
) break; cout << result[i] << " "; } return 0; }

相關推薦

裝載貪心演算法

演算法設計例題:最優裝載(貪心) memory limit: 32768KB    time limit: 1000MS accept: 24    submit: 68 Description 有一批集裝箱要裝上一艘載重量為C的輪船。其中集裝箱i的重量為wi。最

分解貪心演算法

#include<stdio.h> #include<stdlib.h> int main(){ int n,i,sum=0; int diff,result,j=0; scanf("%d",&n); int *arr = (int

裝載問題貪心基礎

最優裝載問題。給出n個物體,第i個物體重量為w[i]。選擇儘量多的物體,使得總重量不超過C。 【分析】 由於只關心物體的數量,所有裝重的沒有裝輕的划算。只需把所有物體按重量從小到大排序,一次

裝載部分揹包問題,貪心,c++

最優裝載 總時間限制: 1000ms 記憶體限制: 65536kB 描述 給定一個最大載重量為M的卡車和N種食品,有食鹽,白糖,大米等(假設它們都是散裝且大貨車只受重量限制不受體積限制)。已知第i種食品的最多擁有Wi公斤,其商品價值為Vi元/公斤,程式設計

分解貪心

Description:設n是一個正整數。現要求將n分解為若干個自然數的和,且使這些自然數的乘積最大。對於給定的正整數n,程式設計計算最優分解方案。 Sample Input: 10 Sa

控制泛函

LQR (linear quadratic regulator)即線性二次型調節器,其物件是現代控制理論中以狀態空間形式給出的線性系統,而目標函式為物件狀態和控制輸入的二次型函式。 LQR 的直觀推導及簡單應用            &

CCF灌溉模板題

第一種是prim演算法 但是有點坑 #include<iostream> using namespace std; typedef long long ll; ll arc[1010][1010]; const ll inf=0x3f3f3f3f; int n,e; ll pri

ccf歷年第四題java解答之-201412-4-灌溉100分

使用kruskal求解,耗時943ms,得分100 徘徊在超時的邊緣,同樣的程式碼,有時候提交是100分,有時候是超時90分,還有時候是超時80分== import java.util.ArrayList; import java.util.Collections; import jav

ccf 灌溉prime模板

模板題#include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f int lowcost[1010]; in

證明求短路徑問題具有子結構動態規劃

演算法導論218頁說了很多來說明最長路徑問題不能用動態規劃演算法,最短路徑可以。在證明最短路徑子問題無關時候應該是預設承認了最短路徑的最優子結構的。可是證明最優子結構需要用到複製貼上法,在用複製貼上法的時候又不免會因為子問題不是無關的從而不能複製貼上,所以不能證明最優子結構,

獨立任務排程動態規劃

題目: 用兩臺處理機A和B處理n個作業。設A和B處理第k個作業的時間分別為ak和bk。由於各個作業的特點和機器效能的關係,對某些作業,在A上的處理時間長;而對另一些作業,在B上的處理時間更長。一臺

ccf 201412-4 灌溉 100分

問題描述   雷雷承包了很多片麥田,為了灌溉這些麥田,雷雷在第一個麥田挖了一口很深的水井,所有的麥田都從這口井來引水灌溉。   為了灌溉,雷雷需要建立一些水渠,以連線水井和麥田,雷雷也可以利用部分麥田作為“中轉站”,利用水渠連線不同的麥田,這樣只要一片麥田

練習題 No.4 字典序小問題貪心

要求 給定長度為N的字串S,要構造一個長度為N的字串T。起初,T是一個空串,隨後反覆進行下列任意操作。 1. 從S的頭部刪除一個字元,加到T的尾部。 2. 從S的尾部刪除一個字元,加到T的尾部

面試高頻SpringMVC執行流程原始碼分析

文章已託管到GitHub,大家可以去GitHub檢視閱讀,歡迎老闆們前來Star! 搜尋關注微信公眾號 碼出Offer 領取各種學習資料! SpringMVC執行流程 SpringMVC概述 Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裡面。

貪心演算法裝載

貪心演算法 貪心本質:一個貪心演算法總是作出當前最好的選擇,也就是說,它期望通過區域性最優選擇從而得到全域性最優的解決方案。 貪心演算法祕籍: (1)貪心策略 首先確定貪心策略,選擇當前看上去最好的一個方案。 (2)區域性最優解 根據貪心策略,一步一步地得到區域性最優解。 (3)全域

裝載問題貪心

問題簡述:給出n個物體,第i個物體重量為wi。選擇儘量多的物體,是的總重量不超過C。 分析:最簡單的一種了,排序,依次選擇每一個物體,直到無法裝下為止。 附程式碼如下: #include <bits/stdc++.h> using namespace std;

高效演算法設計_貪心裝載問題,部分揹包問題,乘船問題

最優裝載問題 題目:有一批集裝箱要裝上一艘載重量為c的輪船。其中集裝箱i的重量為Wi。 輸入: 100 6 100 20 25 25 20 20 輸出: 20 20 20 25 25 100 1 1 1 1 0 0 思路:最優裝載問題要求確定在

裝載問題貪心

問題描述: 有一批集裝箱要裝上一艘載重量為c的輪船。其中集裝箱i的重量為Wi。最優裝載問題要求確定在裝載體積不受限制的情況下,將盡可能多的集裝箱裝上輪船。 問題可以描述為: 式中,變數xi = 0 表示不裝入集裝箱 i,xxi = 1 表示裝入集裝箱 i。

演算法學習系列貪心演算法—多處服務次序問題

問題描述: 設有n(1≤n≤100)個顧客同時等待一項服務。顧客i需要的服務時間為ti,1≤i≤n,共有s處提供此服務。應如何安排n個顧客的服務次序才能使平均等待時間達到最小。平均等待時間是n個顧客的等待時間(含服務時間)總和除以n。編寫一個貪心演算法,計算n

POJ 3621 Sightseeing Cows比例環+SPFA檢測

span fort exp ros 說明 6.0 lines choice stdio.h Sightseeing Cows Time Limit: 1000MS Memory Limit: 65536K Total Submission