PTA 工作分配問題

2021-10-12 22:11:34 字數 749 閱讀 1127

用check函式檢查工人是不是在做同乙份工作,是返回false,否則返回true。函式backtrack實現對第k層子樹進行搜尋。當引數k的值大於n時,表示已經搜尋至葉子結點,此時得到問題的乙個解,判斷是否是最低費用,是就賦值給best。當k的值小於等於n時,此時訪問的是狀態空間樹的內部結點,該結點有n個(未剪枝時)子結點,逐一進行試探,由函式check進行檢測,根據檢測是否是合法放置,進行深度優先的遞迴搜尋,或者進行剪枝操作,剪去有衝突的子樹。

#include

using

namespace std;

int a[21]

[21];

int best=

200,cv=0;

int n;

int b[21]

;bool

check

(int k)

return

true;}

void

backtrack

(int k)

return;}

else

cv -

= a[k]

[i];}}

}int

main()

}backtrack(1

);cout << best;

return0;

}

工作分配問題

問題 設有n件工作分配給n個人,將工作i分配給第j個人所需的菲傭為cij,試設計乙個演算法,為每乙個人分配一件不同的工作,並使總費用達到最小。輸入 第一行有乙個正整數n,接下來n行,每行n個數,表示工作費用。輸入 最小總費用 例子 輸入 3 10 2 3 2 3 4 3 4 5 輸出 9 inclu...

工作分配問題

時間限制 1 sec 記憶體限制 128 mb 提交 10 解決 7 您該題的狀態 已完成 提交 狀態 討論版 設有n件工作分配給n個人,將工作i分配給第j個人費用為cij,為每個人分配一件不同的工作,對於給定的工作費用,計算最佳工作分配方案,使得中費用達到最小。第一行有1個正整數 1 n 20 接...

工作分配問題

problem description 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為 cij。試設計乙個演算法,為每乙個人都分配1 件不同的工作,並使總費用達到最小。設計乙個演算法,對於給定的工作費用,計算最佳工作分配方案,使總費用達到最小。input 輸入資料的第一行有1 個正整數...