貪心 阿里巴巴與四十大盜 揹包問題

2021-09-24 03:22:39 字數 797 閱讀 8878

阿里巴巴因為偶然的機會進入了強盜們的寶庫,他想拿走一些讓鄉親們開開眼。他想每種寶物只拿乙個,如果太重就用錘子鑿開,但毛驢運載能力有限,怎麼才能用毛驢運走最大價值的寶物呢?

輸入第一行:寶物種數n和毛驢的承載重量m

之後n行:每行都是一種寶物的重量和價值

輸出最**值

這個問題是基礎的揹包問題,就是看怎麼裝能使價值最大,就是盡可能裝價效比高的寶物,才能在一定的重量範圍內得到最大的價值。

演算法核心

本題採用貪心演算法,就是每次都選擇剩餘寶物中單位質量的價值(價效比)最高的寶物,直至達到承載量,計算所選寶物的價值即為所求。

演算法流程

採用結構體儲存每種寶物的質量,價值和價效比,將所有寶物按價效比從高到低排序,採用for迴圈遍歷,如果加上當前寶物之後的總質量不大於承載量,總質量增加,總價值增加,如果大於,就將寶物分割,就是總質量與承載量之間的這部分質量全都裝當前寶物,計算這部分的價值加到總價值上,退出迴圈,輸出總價值。

#include#includeusing namespace std;

const int maxn=105;

struct object

a[maxn];

bool sort1(object o1,object o2)

int main()

sort(a,a+n,sort1);

double sum=0.0,res=0.0;//總質量,總價值(最大價值)

for(i=0;ielse//裝上這個寶物超重

}cout

}

阿里巴巴四十大盜教你零知識證明

阿里巴巴四十大盜教你零知識證明 原創 大寶123 響鏈財經 2018 07 12 響鏈,為技術發聲 了解區塊鏈,關注響鏈 關注在學習區塊鏈知識過程中,有乙個名詞經常出現 零知識證明。其中我們熟知的大零幣zec就是採用的零知識證明。基本概念 零知識證明這個概念,最早是由三位外國學者在上世紀80年代初提...

阿里巴巴揹包問題貪心演算法

物品課分割的裝載問題稱為揹包問題,物品不可分割的裝載問題稱為0 1揹包問題。include include using namespace std 按價效比貪心策略 typedef struct three three three bool cmp three t1,three t2 intmain...

UESTC 1253 阿里巴巴和n個大盜(博弈)

思路 乙個很經典的博弈問題,大神的題解 首先總人數是n 1人。由於必須半數以上人同意才能通過方案,所以當剩餘兩個人時2號必死,因為1號不同意就能獨吞。因此2號必須同意3號的方案,所以3號無論什麼方案都會被通過,因此他會選擇把所有寶石留給自己。當總人數三個以上時就有以下的情況 顯然4號需要至少3人的同...