BASIC-28_蓝桥杯_Huffuman树
题目:
给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:
1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa +pb。
2. 重复步骤1,直到{pi}中只剩下一个数。
在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。
本题任务:对于给定的一个数列,现在请你求出用该数列构造Huffman树的总费用。
  例如,对于数列{pi}={5, 3, 8, 2, 9},Huffman树的构造过程如下:
  1. 找到{5, 3, 8, 2, 9}中最小的两个数,分别是2和3,从{pi}中删除它们并将和5加入,得到{5, 8, 9, 5},费用为5。
  2. 找到{5, 8, 9, 5}中最小的两个数,分别是5和5,从{pi}中删除它们并将和10加入,得到{8, 9, 10},费用为10。
  3. 找到{8, 9, 10}中最小的两个数,分别是8和9,从{pi}中删除它们并将和17加入,得到{10, 17},费用为17。
  4. 找到{10, 17}中最小的两个数,分别是10和17,从{pi}中删除它们并将和27加入,得到{27},费用为27。
  5. 现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。
接下来是n个正整数,表示p0, p1, …, pn-1,每个数不超过1000。
5 3 8 2 9
#include <stdio.h>
#define N 100
int main(void)
{
	  int i = 0 , j = 0 , k = 0 ;	
	  int min = 0 , sum = 0;
	  int arr[N] = {0} ;
	  int n = 0 ;
	  scanf("%d",&n);
	  for (i = 0 ; i < n ; i ++)
	  {
		    scanf("%d",&arr[i]);
	  }
  while(n > 1)
	  {		
		    for (i = 0 ; i < 2 ; i ++)
		    {		
			      for (j = 1 , min = 0; j < n ; j ++)
			      {
				        if (arr[min] > arr[j])
				        {
					          min = j ;
				        }
			      }
			      k = arr[min];
			      arr[min] = arr[n-1];
			      arr[n-1] = k;
			      if (i == 0)
			      {
				        n --;
			      }			
		    }
		    arr[n-1] += arr[n];
		    sum += arr[n-1];		
	  }
  printf("%d",sum);
	  return 0;
}
BASIC-28_蓝桥杯_Huffuman树的更多相关文章
- 蓝桥杯T32(树的直径)
		题目链接:http://lx.lanqiao.cn/problem.page?gpid=T32 题意:中文题诶- 思路:显然给出的地图是一颗树,若能求得树的直径 ans,则答案为:ans*(ans+1 ... 
- Java实现蓝桥杯模拟树的叶结点数量
		问题描述 一棵包含有2019个结点的树,最多包含多少个叶结点? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. ... 
- Java实现 蓝桥杯VIP 基础练习 Huffuman树
		基础练习 Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Hu ... 
- 记2014“蓝桥杯全国软件大赛"决赛北京之行
		5月29,30日 最终到了这一天.晚上有数据结构课,10点多的火车,我们就没有去上课,下午在宿舍里收拾东西,晚上8点左右从南校出发,9点半多到达火车站和老师学长学姐们会和. 第一次去北京,第一次买的卧 ... 
- 第六届蓝桥杯软件类省赛题解C++/Java
		第六届蓝桥杯软件类省赛题解C++/Java 1[C++].统计不含4的数字统计10000至99999中,不包含4的数值个数.答:暴力循环范围内所有数字判断一下就是了,答案是52488 1[Java]. ... 
- 2017第八届蓝桥杯C/C++语言A组
		一:题目: 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R ... 
- 蓝桥杯之大臣的旅费(两次dfs)
		Description 很久以前,T王国空前繁荣.为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个 ... 
- 算法笔记_215:第六届蓝桥杯软件类校赛部分真题(Java语言B组)
		目录 1 题目一 2 题目二 3 题目三 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 java中提供了对正则表达式的支持. 有的时候,恰当地使用正则,可以让我们的工作事半功倍! 如下代码 ... 
- 2015年第六届蓝桥杯C/C++B组省赛题目解析
		一.奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利.虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999),要求其中 ... 
随机推荐
- learning uboot auto switch to stanbdy system in qca4531 cpu
			design: when uboot load kerne failed,we can switch to stanbdy system; how to realize: when boot fail ... 
- 个人作业2——WordCount
			一.码云地址 https://gitee.com/fyxjm/PersonalProject-Java/tree/master 二.个人PSP表格 PSP2.1 个人开发流程 预估耗费时间(分钟) 实 ... 
- bzoj2662
			题解: spfa最短路径 dp[i][j]表示到i,用了j掌权 然后转移 代码: #include<bits/stdc++.h> using namespace std; ; int n, ... 
- KMP 详解图
- Alpha阶段项目复审
			队名 优点 缺点 名次 大马猴队 出现BUG修复时间短:针对初期用户需求的分析缺点能够快速更正,针对用户痛点实现了功能:开发的过程中削减了无用的功能,源代码管理比较好,更改能够及时提交,相关成员都有参 ... 
- DevExpress v17.2新版亮点—Analytics Dashboard篇(一)
			用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了Analytics Dashboard v17.2 的新功能,快来下载试用新版本! ... 
- ACCESS删除datagridview和数据库中的一条数据,同时更新显示的方法源码
			//删除,行删除 private void 删除_Click(object sender, EventArgs e) { int dgrcount = dataGridView1.SelectedRo ... 
- Intellij Idea2016.3 svn服务器拉取代码
			1.修改idea的默认配置,取消SVN设置里的两个勾 2.拉取代码 3.输入SVN仓库的地址,然后checkout 即可 
- ZOJ 2965 Accurately Say "CocaCola"!
			Time Limit: 2 Seconds Memory Limit: 65536 KB In a party held by CocaCola company, several stude ... 
- Listbox Binding ItemsSource
			把List<CourseItem>绑定到ListBox. 前台绑定: <ListBox x:Name="ItemBox" Grid.Row="1&quo ... 
