磁碟最優儲存問題 貪心演算法

2021-08-20 07:38:38 字數 1064 閱讀 1345

設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是li, 1<= i<= n。這n 個程式的讀取概率分別是p1,p2,...,pn,且pi+p2+...+pn = 1。如果將這n 個程式按 i1,i2,....,in 的次序存放,則讀取程式ir 所需的時間tr=c*(pi1*li2+pi2*li2+...+pir*lir)。這n 個程式的平均讀取 時間為t1+t2+...+tn。 磁帶最優儲存問題要求確定這n 個程式在磁帶上的乙個儲存次序,使平均讀取時間達到 最小。試設計乙個解此問題的演算法,並分析演算法的正確性和計算複雜性。 程式設計任務: 對於給定的n個程式存放在磁帶上的長度和讀取概率,程式設計計算n個程式的最優儲存方 案。

輸入由檔案input.txt給出輸入資料。第一行是正整數n,表示檔案個數。接下來的n行中, 

每行有2 個正整數a 和b,分別表示程式存放在磁帶上的長度和讀取概率。實際上第k個程 

序的讀取概率ak/(a1+a2+...+an)。對所有輸入均假定c=1。

輸出:

輸出乙個實數,保留1位小數,表示計算出的最小平均讀取時間。

輸入樣例:

571     872

46     452

9       265

73     120

35      87

樣例輸出:

85.6193

#include #include #include using namespace std;

int n;

struct nodep[1005];

bool cmp(node a,node b)

sort(p,p+n,cmp);

double t=0,tmp=0;

for(int i=0;it+=tmp;

}printf("%.4lf\n",t);

return 0;}/*

571 872

46 452

9 265

73 120

35 85

*/

磁碟最優儲存問題 貪心演算法

設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是li,1 i n。這n 個程式的讀取概率分別是p1,p2,pn,且pi p2 pn 1。如果將這n 個程式按 i1,i2,in 的次序存放,則讀取程式ir 所需的時間tr c pi1 li2 pi2 li2 pir lir 這n 個程...

貪心演算法解磁碟檔案最優儲存問題 演算法解題報告

設磁碟上有n個檔案f1,f2,fn,每個檔案占用磁碟上的1個磁軌。這n個檔案的檢索概率分別是p1,p2,pn,且 1。磁頭從當前磁軌移到被檢資訊磁軌所需的時間可用這2個磁軌之間的徑向距離來度量。如果檔案fi存放在第i道上,1 i n,則檢索這n個檔案的期望時間是對於所有的i 要求 輸入 第1行是正整...

貪心演算法 最優裝載問題

1 資料結構定義 double w n 一維陣列儲存古董的重量 2 按重量排序 sort w,w n 按古董重量公升序排序 3 按照貪心策略找最優解 首先用變數 ans 記錄已經裝載的古董個數,tmp 代表裝載到船上的古董的重量,兩個變 量都初始化為 0。然後按照重量從小到大排序,依次檢查每個古董,...