下载此文档

常用c 算法代码word版.doc


文档分类:IT计算机 | 页数:约38页 举报非法文档有奖
1/38
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/38 下载此文档
文档列表 文档介绍
堆石子游戏的问题(多元Huffman编码)
问题描述:
在一个操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次至少选2 堆最多选k堆石子合并成新的一堆,合并的费用为新的一堆的石子数。试设计一个算法,计算出将n堆石子合并成一堆的最大总费用和最小总费用。
编程任务:
对于给定n堆石子,编程计算合并成一堆的最大总费用和最小总费用。
Input
测试数据的第1 行有2个正整数n和k,表示有n堆石子,每次至少选2堆最多选k堆石子合并。第2行有n个数,分别表示每堆石子的个数。
Output
输出最大总费用和最小总费用,用一空格隔开,每个答案一行。
Sample Input
7 3
45 13 12 16 9 5 22
Sample Output
593 199
代码:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool cmp(int a, int b)
{
    return a>b;
}
void Insert(vector<int> &f, int pos, int value)
{
    for (int i = () - 1; i > pos; i--)
    {
        f[i] = f[i - 1];
    }
    f[pos] = value;
}
int Find(vector<int> f, int value)
{
    int pos = () - 1;
    while (pos >= 0 && f[pos] < value)
    {
        pos--;
    }
    return pos + 1;
}
int MaxNum(vector<int> f)
{
    sort((), ());
    int Max;
    Max = 0;
    while (() >= 2)
    {
        int sum = f[() - 1] + f[() - 2];
        Max = Max + sum;
        (() - 1);
        f[() - 1] = sum;
    }
    return Max;
}
int MinNum(vector<int> f, int len)
{
    sort((), (), cmp);
    int Min;
    Min = 0;
    while (() >= len)
    {
        int sum = 0;
        for (int i = () - 1; i >= () - len && i >= 0; i--)
        {
            sum = sum + f[i];
        }
        Min = Min + sum;
        (() - len + 1);
        if (() > len)
        {
            int pos = Find(f, sum);
            Insert(f, pos, sum);
        }
        else if (() != 1)
        {
            f[() - 1] = sum;
            for (int i = 0; i < (); i++)
            {
                Min = Min + f[i];
            }
            break;
        }
        else
        {
            break;
        }
    }
    return Min;
}
bool run()
{
    int n, m;
    if (!(cin >> n >> m)) return false;
    vector<int> f(n);
 

常用c 算法代码word版 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数38
  • 收藏数0 收藏
  • 顶次数0
  • 上传人992006838
  • 文件大小55 KB
  • 时间2021-07-03