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();
    
        }
        
    
    }
    
    
    

  • 相关阅读:
    多项式多点求值和插值
    Java Dao设计模式
    (转)HTTP长连接和短连接
    JavaScript——this关键字
    JavaScript——Prototype详探
    JavaScript——特殊点总结
    JavaScript——正则表达式
    JavaScript——Window对象
    JavaScript——this、constructor、prototype
    JavaScript——事件模型
  • 原文地址:https://www.cnblogs.com/ygh1229/p/5690429.html
Copyright © 2011-2022 走看看