最優合併問題

2021-07-25 07:31:02 字數 926 閱讀 9535

#include #define k 4

int data[k] = ;

void sort(int data)

} }}//max = (12+11) + ((12+11) + 5) + ((12+11+5) +2) - (k - 1);

//min = (2+5) + ((2+5)+11) + ((2+5+11) + 2) - (k-1);

//按照這兩個公式求解的

int main()

index--;

} max -= (k - 1);

//最好情況.雖然有點波折,但是最終搞出來了

//思路:在不考慮效率的條件下,我就能想到啥髮用啥發,

//遍歷整個陣列,找出最小的兩個,其中乙個賦值成二者的和, 另一賦成乙個大值(不影響結果的)每次遍歷加,即可.

printf("\n");

int j, minvalue = 0;

for (j = 0; j < k-1; j++)

if (min2 >= data[i] && index == 1 && i != minindex1)

}data[minindex2] = 10000000;

index--;

} printf("%d %d \n", min1, min2);

data[minindex1] = min1 + min2;

minvalue += (min1 + min2);

int y;

for (y = 0; y < k; y++)

printf("\n");

} minvalue -= (k - 1);

printf("最查情況: %d, 最好情況: %d", max, minvalue);

return 0;

}

最優合併問題

include iostream include fstream include vector include queue using namespace std int a 50 n為要合併的序列個數 返回最少合併次數 int mergemin int n q.pop return sum n為要...

最優合併問題

給定k個排好序的序列s1,s2,sk,用2路合併演算法將這k個序列合併成乙個序列。假設所採用的2路合併演算法合併兩個長度分別為m和n的序列需要m n 1次比較。試設計乙個演算法確定合併這個序列的最優合併順序,使所需要的總比較次數最少。測試用例 4 序列數 5 12 11 2 序列中的元素數 輸出 7...

最優合併問題

給定k個排好序的序列s1,s2,sk,用2路合併演算法將這k個序列合併成乙個序列。假設所採用的2路合併演算法合併兩個長度分別為m和n的序列需要m n 1次比較。試設計乙個演算法確定合併這個序列的最優合併順序,使所需要的總比較次數最少。include define n 4 int min int a ...