首页 > 其他分享 >2024年11月25日总结

2024年11月25日总结

时间:2024-11-25 23:33:34浏览次数:6  
标签:11 Map right frequencyMap 25 2024 frequency HuffmanNode root

今天完成了前端对数据库一张表的增删部分,改查还有一些缺陷。还重新温习了一下哈夫曼树
import java.util.*;

class HuffmanNode implements Comparable {
char character;
int frequency;
HuffmanNode left, right;

public HuffmanNode(char character, int frequency) {
    this.character = character;
    this.frequency = frequency;
    this.left = this.right = null;
}

@Override
public int compareTo(HuffmanNode other) {
    return this.frequency - other.frequency;
}

}

public class HuffmanTree {
public static void main(String[] args) {
String input = "this is an example for huffman encoding";
Map<Character, Integer> frequencyMap = buildFrequencyMap(input);
HuffmanNode root = buildHuffmanTree(frequencyMap);
Map<Character, String> huffmanCodes = generateHuffmanCodes(root, "");

    System.out.println("Huffman Codes:");
    for (Map.Entry<Character, String> entry : huffmanCodes.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
}

private static Map<Character, Integer> buildFrequencyMap(String input) {
    Map<Character, Integer> frequencyMap = new HashMap<>();
    for (char c : input.toCharArray()) {
        frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
    }
    return frequencyMap;
}

private static HuffmanNode buildHuffmanTree(Map<Character, Integer> frequencyMap) {
    PriorityQueue<HuffmanNode> minHeap = new PriorityQueue<>();
    for (Map.Entry<Character, Integer> entry : frequencyMap.entrySet()) {
        minHeap.add(new HuffmanNode(entry.getKey(), entry.getValue()));
    }

    while (minHeap.size() > 1) {
        HuffmanNode left = minHeap.poll();
        HuffmanNode right = minHeap.poll();
        HuffmanNode parent = new HuffmanNode('\\0', left.frequency + right.frequency);
        parent.left = left;
        parent.right = right;
        minHeap.add(parent);
    }

    return minHeap.poll();
}

private static Map<Character, String> generateHuffmanCodes(HuffmanNode root, String code) {
    Map<Character, String> huffmanCodes = new HashMap<>();
    if (root != null) {
        if (root.left == null && root.right == null) {
            huffmanCodes.put(root.character, code);
        }
        huffmanCodes.putAll(generateHuffmanCodes(root.left, code + "0"));
        huffmanCodes.putAll(generateHuffmanCodes(root.right, code + "1"));
    }
    return huffmanCodes;
}

}

标签:11,Map,right,frequencyMap,25,2024,frequency,HuffmanNode,root
From: https://www.cnblogs.com/szxworld/p/18569036

相关文章

  • 2024 PyCharm 安装使用教程大揭秘(附激活妙招)
    第一步,开启PyCharm之旅下载pycharm待下载顺利完成后,双击安装包开启安装程序,在安装向导中一路点击“next”,依照提示逐步完成基础安装设置首次启动PyCharm,此时软件会提示我们输入激活码让我们开启畅快淋漓的Python开发体验之旅第二步点击获取补丁文件保存下载之后进入......
  • python复习笔记——2024.11.25
    2024.11.25一、类的定义二、类与实例的关系#定义一个猫类,age,name,color是属性,或者称为成员变量classCat: age=Nonename=Nonecolor=Nonecat1=Cat()#通过对象名.属性名,可以给各个属性赋值cat1.name="小白"cat2,age=2cat3.color="白色"print(f......
  • 【异或运算】codeforces 1153 B. Dima and a Bad XOR
    前言异或运算:是一种在二进制数系统中使用的逻辑运算。它的基本规则是对两个二进制位进行比较,如果这两个位不同,则结果为\(1\);如果相同,则结果为\(0\)。异或运算的规则\(0\)XOR\(0\)=\(0\)\(0\)XOR\(1\)=\(1\)\(1\)XOR\(0\)=\(1\)\(1\)XOR\(1\)=\(0\)特性......
  • Java学习笔记——2024.11.25
    2024.11.25一、Java_DOS原理1.DOS基本原理创建文件夹=>mdd:\\xxx消除文件夹=>rdd:\\xxx2.相对路径和绝对路径=>相对路径:从当前目录开始定位,形成的一个路径=>绝对路径:从顶级目录d,开始定位,形成的路径举例子:相对路径:..\..\abc2\test200\hello.txt......
  • 1-11一些时间复杂度的证明
    时间复杂度的证明1.大O原理如图所示,大O原理,只取最高的复杂度2.加法原理想要证明这个首先,根据大O定义:F(N)<=C1f(N)G(N)<=C2g(N)再把两者合并起来:F(N)+G(N)<=C1f(N)+C2g(N)设C3=max(C1,C2)则F(N)+G(N)<=C3(f(N)+g(N))所以O(f)+O(g)<=O(f+g)具体证明如图:......
  • 11.25
    做差旅费报销管理信息系统页面要求(1)系统可以通过浏览器直接访问;(1分)(2)各个功能页面整体风格统一;(3)首页为用户登录页面,职员、职员经理、总经理、财务人员四种角色用户登录后,进入相应的功能页,只能看到角色允许访问功能模块,用户登录界面包含用户、密码两个文本框,以及登录按钮;(4分)(4)职......
  • 2025年计算机毕业设计选题大全:微信小程序选题篇(新颖必过)
    一、前言......
  • 电脑操作记录ManicTime Pro v2024.3修改版
    软件介绍一天当中大部分时间都在与电脑为伴,那当你静下来的时候是否真正思考过,这一天到底用电脑做了些什么?是否只是沉迷于某个游戏荒废了一天或者只忙于工作,没有时间放松一下。是时候具体分析一下了,而ManicTime很适合来帮你完成这份工作,它会静静地在后台记住你的电脑操作记录,然后......
  • 每日打卡11.23
    includeusingnamespacestd;intmain(){structstuent{inta[5];doubleall=0;}s[5];intlow[5],high[5];doubleava[5]={0};inttemp;cout<<"分别输入学生的语数英物化成绩";for(inti=0;i<5;i++){for(intj=0;j<5;j++){cin......
  • 每日打卡11.24
    includeusingnamespacestd;definemax20voidswap(char*p,char*q);intmain(){chara[max];intindex,n;cout<<"输入n"<<endl;cin>>n;cout<<"输出n个字符"<<endl;for(inti=0;i<n;i++){ci......