動態規劃 國王與金礦

2021-08-26 09:16:55 字數 1089 閱讀 1596

題目(**)

有乙個國家發現了5座金礦,每座金礦的**儲量不同,需要參與挖掘的工人數也不同。參與挖礦工人的總數是10人。每座金礦要麼全挖,要麼不挖,不能派出一半人挖取一半金礦。要求用程式求解出,要想得到盡可能多的**,應該選擇挖取哪幾座金礦?

遞迴實現

public

static

void

main(string args) ;

int g = new

int;

int gold = new main().maxgold(5, 10, p, g);

system.out.println(gold);

}public

intmaxgold(int n, int w, int p, int g)

if (w < p[n - 1])

return math.max(maxgold(n - 1, w, p, g), maxgold(n - 1, w - p[n - 1], p, g) + g[n - 1]);

}

動態規劃
/**

*@param n 金礦數量

*@param w 工人數量

*@param p 第n個金礦需要工人數量

*@param g 第n個金礦金子數量

*@return void

*@description 採用動態規劃獲取w個工人從n個金礦中能挖到的最大金子數量

**/public

void

getmaxgold(int n, int w, int p, int g) else

}for (int i = 1; i < n; i++) else

if(j+1 == p[i]) else

}show(result);

preresult = result.clone();

}}public

void

show(int array)

system.out.println();

}

兩種方法的選擇應根據實際情況,如果例子中金礦數不變,而工人數變為10000,動態規劃效果不及簡單遞迴。

國王與金礦 動態規劃

參照大神的思路,原文在此 思路與上文是一樣的,主要是做一些的改進 主要是空間複雜度 題目 有乙個國家發現了5座金礦,每座金礦的 儲量不同,需要參與挖掘的工人數也不同。參與挖礦工人的總數是10人。每座金礦要麼全挖,要麼不挖,不能派出一半人挖取一半金礦。要求用程式求解出,要想得到盡可能多的 應該選擇挖取...

20170801 動態規劃之國王和金礦

20170801 動態規劃之國王和金礦 題目 國王和金礦 有乙個國家發現了5座金礦,每座金礦的 儲量不同,需要參與挖掘的工人數也不同。參與挖礦工人的總數是10人。每座金礦要麼全挖,要麼不挖,不能派出一半人挖取一半金礦。要求用程式求解出,要想得到盡可能多的 應該選擇挖取哪幾座金礦?1 400金 5人 ...

動態規劃 金礦模型

問題描述 有people個人和 num個金礦,開採 每個金礦都需要i people個人,可以獲得i getgold個金子,並且用過的人不可以重複使用,問從這 num個金礦中最多可以得到多少個金子 輸入輸入第一行有兩個數,第乙個是用來開採金礦的總人數,第二個是總金礦數。輸入檔案的第2至n 1行每行有兩...