试题详情
简答题 在一个操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次至少选2堆最多选k堆石子合并成新的一堆,合并的费用为新的一堆的石子数。试设计一个算法,计算出将n堆石子合并成一堆的最大总费用和最小总费用。 输入数据的第1行有2个正整数n和k,表示有n堆石子,每次至少选2堆最多选k堆石子合并。第2行有n个数,分别表示每堆石子的个数。(贪心算法,要求给出贪心策略)
  • 最小费用策略:每次选k堆最小的堆合并
    排序:5,9,12,13,16,22,45;13,16,22,26,45;26,45,51;122
    费用S=(5+9+12)+(13+16+22)+(26+45+51)=26+51+122=199
    最大费用策略:每次选2堆最大的堆合并
    排序:5,9,12,13,16,22,45;5,9,12,13,16,67;5,9,12,13,83;5,9,12,96;5,9,108;5,117;122
    费用T=67+83+96+108+117+122=593
  • 关注下方微信公众号,在线模考后查看

热门试题