題目(**)
有乙個國家發現了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行每行有兩...