場景:海盜來到了召喚師峽谷,然後絲血準備逃生。但是仍然貪圖財寶。現在時間有限,必須要把容量一定的揹包裡裝下最多的財富。
思路:按照價效比把所有寶藏排序。然後按照價效比的順序往包裡裝。
// 包的最大容量
private
int max_weight =
120;
// 每個寶藏的重量
private
int[
] weights =
newint
;// 每個寶藏的價值
private
int[
] values =
newint
;
public
static
void
main
(string[
] args)
/**
* 獲取寶藏的最大價值
*/public
void
getmaxvalue
(int capacity,
int[
] weight,
int[
] values)
// 按照價效比進行排序
for(
int i =
0; i < size; i++)}
}// 按照價效比排序的寶藏的質量和價值
int[
] w =
newint
[size]
;int
v =newint
[size]
;for
(int i =
0; i < size; i++
)//包裡裝的寶藏
list
pacagecontent =
newarraylist
();// 開始遍歷所有的寶藏 如果寶藏的質量比包的容量小 就裝進去
for(
int i =
0; i < size; i++)}
for(
int a : pacagecontent)
}
現在假設有8支隊伍打比賽,那麼假設第一天1和2打,3和4打,5和6打,7和8打。那麼就有如下圖的安排表。一共要打七天會打完。現在要把這個圖分開四個部分來表示。
}}我實在不知道這個演算法該怎麼去描述,總之就是把乙個特殊點用l給包圍起來
}// 填充左下部分
for(
int i = m; i < n; i++)}
// 填充右下部分
for(
int i = m; i < n; i++)}
}}
// 棋盤
private
int[
] board;
// 特殊點的值
int specialdot =0;
public
chessboard
(int specialrow,
int specialcol,
int size)
//列印結果
private
void
print()
}}public
static
void
main
(string[
] args)
/**
* * @param specialrow
* 特殊點的橫座標
* @param specialcol
* 特殊點的縱座標
* @param startrow
* 棋盤起點的橫座標
* @param startcol
* 棋盤起點的縱座標
* @param size
*/private
void
createchessboard
(int specialrow,
int specialcol,
int startrow,
int startcol,
int size)
int half = size /2;
specialdot = specialdot %4+
1;// 如果特殊點在左上方
if(specialrow < startrow+half && specialcol < startcol+half)
else
// 如果特殊點在右上方
if(specialrow < startrow+half && specialcol >= startcol+half)
else
// 如果特殊點在左下方
if(specialrow >= startrow+half && specialcol < startcol+half)
else
// 如果特殊點在右下方
if(specialrow >= startrow+half && specialcol >= startcol+half)
else
}
演算法很美03演算法思想(分治)
分治法 divide and conquer,d c 將原問題劃分成若干個規模較小而結構與原問題一致的子問題 遞迴地解決這些子問題,然後再合併其結果,就得到原問題的解。容易確定執行時間,是分治演算法的優點之一。分治模式在每 層遞迴上都有三個步驟 分解 divide 將原問題分解成一系 列子問題 解決...
經典演算法之動態規劃 分治 和貪心
1 分治 分治 即分而治之 把乙個複雜的問題分成多個相同或相似的子問題,再把子問題分成更小的子問題 直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。適用場景 二分搜尋 歸併排序 快速排序 大整數乘法 第k小元素 最近點對 快速傅利葉變換等。2 動態規劃 動態規劃法也是把問題一層一層地...
leetcode03 貪心演算法
在貪婪演算法 greedy method 中,我們要逐步構造乙個最優解。每一步,我們都在一定的標準下,做出乙個最優決策。做出決策所依據的標準稱為貪心準則 greedy criterion 貪心演算法是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的僅是...