//九度oj教程31 哈夫曼樹之搬運水果 (木有優先佇列,利用兩趟簡單選擇排序來實現的演算法……c語言坑啊)
//#include #define maxs 10005
//由於c裡面沒有優先佇列,故,用簡單選擇排序兩次來模擬哈夫曼樹的帶權路徑長度……
int main()
for(i=1;i<=n;i++)scanf("%d",&h[i]);
s=a=0;
while(n>2)
a=h[k];
h[k]=h[j];
h[j--]=a;
for(i=k=1;i<=j;i++) //簡單選擇排序第二趟
a=h[k];
h[k]=h[j];
h[j]=a; //排序完成,末尾倆相加,再次進入該陣列
h[n-1]+=h[n];
s+=h[--n];
} s+=h[1]+h[2];
printf("%lld\n",s);
} return 0;
}
九度OJ1172 哈夫曼樹
題目描述 哈夫曼樹,第一行輸入乙個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。輸入 輸入有多組資料。每組第一行輸入乙個數n,接著輸入n個葉節點 葉節點權值不超過100,2 n 1000 輸出 輸出...
九度OJ 1172 哈夫曼樹
由於建立的哈夫曼樹不唯一,所以機試多考察哈夫曼樹的帶權路徑長度和,如此題。此問題最終轉化為利用堆模擬建樹過程,求出非葉節點的權值和 該哈夫曼樹的帶權路徑長度和 無需作出哈夫曼樹的具體結構體 收穫如下 關於哈夫曼樹 該樹非葉節點的權值和 該哈夫曼樹的帶權路徑長度和 關於堆排序 堆排序建堆o n log...
九度OJ 1172 哈夫曼樹
哈夫曼樹,第一行輸入乙個數n,表示葉結點的個數。需要用這些葉結點生成哈夫曼樹,根據哈夫曼樹的概念,這些結點有權值,即weight,題目需要輸出所有結點的值與權值的乘積之和。輸入有多組資料。每組第一行輸入乙個數n,接著輸入n個葉節點 葉節點權值不超過100,2 n 1000 輸出權值。5 1 2 2 ...