首页 > 其他分享 >搬水果(哈夫曼树思想)

搬水果(哈夫曼树思想)

时间:2025-01-04 23:33:25浏览次数:3  
标签:体力 小明 水果 哈夫曼 思想 int 合并 耗费

描述

    在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时总共消耗的体力等于每次合并所耗体力之和。     假定每个水果重量都为 1,并且已知水果的种类数和每种水果的数目,你的任务是设计出合并的次序方案,使小明耗费的体力最少,并输出这个最小的体力耗费值。例如有 3 种水果,数目依次为 1,2,9。可以先将 1,2 堆合并,新堆数目为3,耗费体力为 3。然后将新堆与原先的第三堆合并得到新的堆,耗费体力为 12。所以小明总共耗费体力=3+12=15,可以证明 15 为最小的体力耗费值。

输入描述:

    每组数据输入包括两行,第一行是一个整数 n(1<=n<=10000),表示水果的种类数。第二行包含 n 个整数,用空格分隔,第 i 个整数(1<=ai<=1000)是第 i 种水果的数目。

输出描述:

对于每组输入,输出一个整数并换行,这个值也就是最小的体力耗费值。输入数据保证这个值小于 2^31。

示例1

输入:

3
9 1 2
0
#include<stdio.h>
int n,s[10000];//全局变量
int min(){
    int m=s[0];//先默认最小值为第一个值
    int t=0;//注意:重置t
    for(int i=1;i<n;i++){
        if(s[i]<m){
            t=i;//记录最小值的位置
            m=s[i];//找到最小值m
        }
    }
    s[t]=s[n-1];//最小值的位置放数组最后的值
    n--;//每找到一个最小值,数组长度减一
    return m;//返回最小值
}

int main(){
    int res=0,min1,min2;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&s[i]);
    }
    while(n>1){//n-1次循环
        min1= min();
        min2= min();
        res=res+min1+min2;
        s[n]=min2+min1;//放回数组,再找俩最小值
        n++;//放回后数组长度+1
    }
    printf("%d",res);
    return 0;
}

输出:

15

标签:体力,小明,水果,哈夫曼,思想,int,合并,耗费
From: https://blog.csdn.net/2401_88565406/article/details/144936698

相关文章

  • Faster RCNN核心思想理解-尺度变换梳理
    FasterRCNN是目标检测领域里程碑式的算法,其融合了"RegionProposal","AnchorBased"等早期目标检测的重要思想,并且在开放世界目标检测中又重新获得应用。本文将以分析FasterRCNN为主线,探讨目标检测涉及到的设计思路和理论基础。参考链接:RCNN到FasterRCNN:https://blog.csdn......
  • 哈夫曼编码
    哈夫曼编码        假如说,我们有下面这一个原始的字符串序列:        想对它进行哈夫曼编码,进行数据压缩存储,甚至通过网络发送存储我们的某一个设备中。        我们要对这个原始的字符串进行哈夫曼编码,我们首先要构建一棵最佳判定树!      ......
  • 2025毕设ssm水果购物商城程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今数字化时代,互联网的普及深刻改变了人们的消费习惯。水果作为日常消费的重要组成部分,其销售模式也逐渐从传统的实体店铺向线上转移。随着生......
  • 一棵哈夫曼树共有127个结点,对其进行哈夫曼编码,共能得到()个字符的编码
    哈夫曼树与哈夫曼编码的故事想象你是一位邮递员,你的工作是在一个小镇上传递信件。这个小镇上有很多户人家,但每家的信件量都不同。为了更高效地完成工作,你想到了一个办法:给每家分配一个独特的代码,这样你就可以更快地识别出信件应该送到哪家。这个独特的代码就是哈夫曼编码。而......
  • 深入探索哈夫曼编码与二叉树的遍历
    编码表(将字符转换成二进制01数字)定长的编码方式不定长的编码方式压缩率很高,但是会产生数据歧义哈夫曼编码出现的次数越多,权重分配的值越小。哈夫曼树,左1右0,转换成编码哈夫曼编码(压缩率高,数据不会产生歧义)哈夫曼编码----->二叉......
  • ssm蔬菜水果销售网站1y6qd--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着健康饮食观念的普及和互联网技术的快速发展,线上购买蔬菜水果已成为消费者的新选择。然而,当前市场上蔬菜水果销售网站众多,但......
  • 构建哈夫曼树
    构建哈夫曼树哈夫曼树(HuffmanTree),又称最优二叉树,是一种带权路径长度最短的二叉树,常用于数据压缩领域中的编码算法——哈夫曼编码。哈夫曼树是一种特殊的二叉树,其构造过程需要频繁地找到频率最小的两个节点并进行合并。这个过程可以通过最小堆来高效地实现。**堆(Heap)**是......
  • “高精度算法”思想 → 大数阶乘
    【“大数阶乘”算法思想】利用“高精度算法”思想计算“大数阶乘”,需要明确几个关键点:(1)数组a的大小(maxn)需要足够大,以存储阶乘结果的所有位数。(2)数组a应该在函数外部被初始化为全零,并且第一个元素应该设置为1,表示阶乘的初始值。(3)在计算过程中,数组a的每一位都会被更新......
  • harmony_flutter mvvm架构思想
    harmony_fluttermvvm架构思想写在前面在Flutter中实现MVVM(Model-View-ViewModel)架构是为了将UI(视图)与业务逻辑(模型和视图模型)分离,提高代码的可维护性和可读性。整体架构概述Model:数据层,处理应用程序的业务逻辑和数据管理。View:用户界面层,负责展示数据并接受用户输入。V......
  • 基于Java水果商城系统详细设计和实现
    **主要内容:**SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。......