日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法第5章上机实践报告

發布時間:2025/6/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法第5章上机实践报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

二、問題描述  該問題實際上是與旅行售貨員問題一樣的排列數問題,目的是找到一個工作序列,使得總費用最小。

三、算法描述(包括解空間,畫出測試樣例的解空間樹,剪枝(約束函數或限界函數)方法描述)  解空間:解空間可看成是一顆排列樹,第i層為排在第i位的數,找到從根結點到葉子結點的路徑對應工作費用最小的分支。

  測試樣例的解空間樹:

  

  剪枝函數:(temp為當前工作費用,best為記錄的最小工作費用,n為工人數,a[t][x[i]]表示第t個人分配第x[i]個工作的費用)

void Backtrack(int t) {if(t>n){if (temp < best) {best = temp;}return ;}else {for (int i = t; i <= n; i++) {if (temp + a[t][x[i]] < best){temp += a[t][x[i]];swap(x[t], x[i]);Backtrack(t+1);swap(x[t], x[i]);temp -= a[t][x[i]];}}} }

四、心得體會(對本次實踐收獲及疑惑進行總結)

  本題與旅行售貨員問題基本相似,但更為簡單,于是采用了書上介紹的旅行售貨員算法進行解題。最初我是想采用更為暴力,但也更為直觀的解題方法,但最終還是采用了更優的旅行售貨員算法。

轉載于:https://www.cnblogs.com/Lumasaevial/p/10165086.html

總結

以上是生活随笔為你收集整理的算法第5章上机实践报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。