這個問題聽起來像這樣,我們給了n個文本,他們將被放置在一些磁帶/樂隊(不知道什麼是英文的等價物,但我認爲你明白我在說什麼)。算法 - 如何在p波段上放置n個文本,以使全局訪問時間最短。每個文本都有自己的長度
爲了讀取位於其中一個帶上的位置k處的文本,我們必須從特定帶上的位置1,2,...,k讀取文本。每個文本都有自己的長度。
現在,我們必須找出一種將文本放在p波段上的方法,這樣我們就可以獲得最小的全局訪問時間。全球接入時間通過將每個頻帶的所有總接入時間相加來計算。
用於計算帶的總accesing時間的公式爲:
n_
\ [L(T1)+L(T2)+...+L(Ti)]
/_
i=1
現在,小圖我所做的是從1到n SUM; (T i)是T i的長度;
T i是位於相應帶上的位置i處的文本;
這裏是 「僞」 的等效情況下,它可以幫助:
n-number of texts;
Band[n]-array of texts
sum=0, sum2=0;
for(int i=0;i<n;i++)
{sum=0;
for(int j=0;j<=i;j++)
sum=sum+Band[j].length;
sum2=sum2+sum; }
return sum2;
下面是一個例子,以闡明該問題:
say p is 3, so we get 3 bands
say n is 9, so we get 9 texts and the lengths are : 2, 3, 4, 5, 6, 7, 8, 9, 10
and they are placed on the bands in the following way:
帶1:2,5 ,8 - >第一帶的總接近時間:24
帶-2:3,6,9 - >帶-2的總接入時間:30
帶3:4,7,10 - 帶3的>總accesing時間:36
全球accesing時間:24 + 30 + 36 = 90
我不認爲這是最好的方法去做,因爲如果你先放置較長的文本,那麼它們將在每次迭代中被考慮,但是如果你將它們放在最後,它們將被考慮到只有一次。我認爲解決這個問題的最好方法與你所說的相反,把小文本放在第一位,最大的文本放在最後。 –
是的,我寫信將每段文字放在錄音帶前面,我會盡量讓它更清晰 –