编辑版word堆石子游戏的问题(多元Huffman编码)问题描述:在一个操场的四周摆放着n堆石子
现要将石子有次序地合并成一堆
规定每次至少选2堆最多选k堆石子合并成新的一堆,合并的费用为新的一堆的石子数
试设计一个算法,计算出将n堆石子合并成一堆的最大总费用和最小总费用
编程任务:对于给定n堆石子,编程计算合并成一堆的最大总费用和最小总费用
Input测试数据的第1行有2个正整数n和k,表示有n堆石子,每次至少选2堆最多选k堆石子合并
第2行有n个数,分别表示每堆石子的个数
Output输出最大总费用和最小总费用,用一空格隔开,每个答案一行
SampleInput73451312169522编辑版wordSampleOutput593199代码:#include#include#includeusingnamespacestd;boolcmp(inta,intb){returna>b;}voidInsert(vector&f,intpos,intvalue){for(inti=f
size()-1;i>pos;i--){f[i]=f[i-1];}f[pos]=value;}编辑版wordintFind(vectorf,intvalue){intpos=f
size()-1;while(pos>=0&&f[pos]=2){intsum=f[f
size()-1]+f[f
size()-2];Max=Max+sum;f
resize(f
size()-1);f[f
size()-1]=sum;}编辑版wordreturnMax;}intMinNum(vectorf,intlen){sort(f
begin(),f
end(),cmp);intMin;Min=0;while(f
size()>=len){intsum=0;for(inti=f
size()-1;i>=f