zoukankan      html  css  js  c++  java
  • 哈夫曼树练习

    题目描述

    哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出所有结点的值与权值的乘积之和。 
    输入描述:
    输入有多组数据。
    每组第一行输入一个数n,接着输入n个叶节点(叶节点权值不超过100,2<=n<=1000)。
    输出描述:
    输出权值。

    输入例子:
    5  
    1 2 2 5 9

    输出例子:
    37


    要注意哈夫曼树的性质,是所有非叶子节点的权值相加。

    代码如下:
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class 哈夫曼树 {
    
        public static void main(String[] args) {
            int sum=0;
            Scanner in = new Scanner(System.in);
            while(in.hasNext()){
                int count=in.nextInt();
                int[] num=new int[count];
                for(int a=0;a<count;a++){
                    num[a]=in.nextInt();
                }
                Arrays.sort(num);// 排序
    //            for(int a=0;a<count;a++){
    //                System.out.print(num[a]+" ");
    //            }
    //            System.out.println();
                switch (count) {
                case 1:
                    sum=num[0];
                    break;
                case 2:
                    sum=num[0]+num[1];
                    break;
                default:
                    for(int i=0;i<count-1;i++){
                        num[i+1]=num[i]+num[i+1];
                        sum+=num[i+1];
                        Arrays.sort(num, i+1, count);
                    }
                    break;
                }
                    System.out.println(sum);
                    sum=0;
                
                
                
            }
            
            
            in.close();
    
        }
        
    
    }
    
    
    

  • 相关阅读:
    B
    A
    UVA
    马的移动(BFS) 详细注释 一个具有情怀的题目
    JAVA JDK 环境变量配置--简单图解
    linux系统(rpm与deb环境),JAVA JDK的配置
    Jmeter接口测试+压力测试+环境配置+证书导出
    LR访问Https接口
    GitHub linux 提交文件及403错误处理
    random模块写的验证码
  • 原文地址:https://www.cnblogs.com/ygh1229/p/5690429.html
Copyright © 2011-2022 走看看