【實踐】算法第五章上機實踐報告

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++。

相關文章
相關標籤/搜索