演算法第5章實踐報告

2022-09-13 01:18:14 字數 1050 閱讀 9523

實踐題目 (工作分配問題)

問題描述

7-2 工作分配問題 (20 分)

設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 。 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。

輸入資料的第一行有1 個正整數n (1≤n≤20)。接下來的n行,每行n個數,表示工作費用。

將計算出的最小總費用輸出到螢幕。

在這裡給出一組輸入。例如:

3

10 2 3

2 3 4

3 4 5

在這裡給出相應的輸出。例如:

9

演算法描述(包括解空間,畫出解空間樹,剪枝(約束函式或限界函式)方法描述)

4.具體**

#include#include

using

namespace

std;

int arr[10005][10005];//

將第i工作工作分配給第j人需要的費用

int p[10005]; //

當前分配狀態

intn;

int best = 10005;//

最小總費用

int temp = 0;//

當前作業分配後的花費

void backtrack(int

dep)

}else

p[i] = 0;//

沒有分配

temp -=arr[dep][i];

} }}

}int

main()

}memset(p,

0,sizeof

(p));

backtrack(1);

cout

<< best

}

5.心得體會

在我的同伴打出這道題後,他非擦汗那個耐心得向我講解了其中的演算法與**含義,我對回溯法的應用有了更好的認識,希望自己打的時候能夠運用起來。

演算法第5章上機實踐報告

7 2 工作分配問題 20 分 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。輸入資料的第一行有1 個正整數n 1 n 20 接下來的n行,每行n個數,表示工作費用。將計算出的最小總費用輸...

演算法第4章實踐報告

實踐題目 程式儲存問題 問題描述 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。第一行是2 個正整...

演算法第5章上機實踐

1.實踐題目 工作分配問題 2.問題描述 7 2 工作分配問題 20 分 設有n件工作分配給n個人。將工作i分配給第j個人所需的費用為cij 設計乙個演算法,對於給定的工作費用,為每乙個人都分配1 件不同的工作,並使總費用達到最小。輸入資料的第一行有1 個正整數n 1 n 20 接下來的n行,每行n...