1. 實踐題目:工做分配問題python
2. 問題描述:c++
設有n件工做分配給n我的。將工做i分配給第j我的所需的費用爲cij 。 設計一個算法,對於給定的工做費用,爲每個人都分配1 件不一樣的工做,並使總費用達到最小。算法
輸入格式:測試
輸入數據的第一行有1 個正整數n (1≤n≤20)。接下來的n行,每行n個數,表示工做費用。設計
輸出格式:code
將計算出的最小總費用輸出到屏幕。blog
輸入樣例:
ci
3class
10 2 3方法
2 3 4
3 4 5
輸出樣例:
9
3. 算法描述
測試樣例解空間樹:
剪枝方法:
剪枝方法很簡單,在每次回溯前進行這樣一個判斷:
if total_cost > min_cost: return false
其中total_cost爲目前爲止的總花費,而min_cost爲目前爲止的最小花費。若檢測到目前的花費已經超過目前爲止最小花費則這個節點不走。
4. 心得體會(對本次實踐收穫及疑惑進行總結)
本次實踐第一題難度很大,第二題難度還好。
用獲得回溯法的題目不少都卡時間,必須仔細思考剪枝方法,不然很容易超時,作這一類題目也應儘可能使用c / c++。