1.关于哈夫曼树

  哈夫曼树也称最优二叉树,其n个叶子节点都是带有权值的,其节点的带权路径长度(n个叶子节点的权值*其到根节点的路径之和)最小的二叉树即为哈夫曼树。

  一般的哈夫曼树不存在度为1的节点(除非在退化的情况下)

  n个节点经过n-1一次合并最终成为拥有2n-1个节点的哈夫曼树

  1.1 构建哈夫曼树

    1>从n个带权的节点中选择最小的两个n1,n2构成一个子二叉树,并将其根的权值设为w(n1) + w(n2) = nw

    2>再将n个带权节点删除n1和n2,而加入nw

    3>再重复以上两步

  1.2 哈夫曼编码

    建立一棵哈夫曼树,规定其左孩子均对应于二进制的0、右孩子均定义为二进制的1—这就是一颗哈夫曼编码树

    可以通过此树实现PFC编码(前缀无歧义编码—prefix-free code),每个字符对应着规定某个编码—如规定‘M’对应110等

    只要所有字符都对应于叶节点,就不会产生歧义现象

    可以通过哈夫曼编码实现文件的无损压缩或者解压等

    根据某个字符出现的频率高低作为权重,频率高的其二进制码则短一些—相当于哈夫曼树中权重高的叶子节点到根节点路径短,频率低的二进制码则相对较长

    

    其解码根据编码串如"11001111111001001"依次进行扫描,从根节点开始根据对应是0/1深入左/右子树进行,直至达到叶节点退出—根据此路径所扫描的码如110,对应'M'

    由此再返回此树的根节点进行再次扫描—由此迭代至编码串遍历完毕

    

2.C++不能重载的运算符

  1>"."类成员访问运算符   2>"::"域运算符   3>".*"类成员指针访问运算符   4>sizeof()运算符

   注意:new/delete运算符是可以被重载的

3. c++调用基类虚函数是采用动态联编(动态绑定)

  C++默认是采用函数和实现在编译阶段就进行绑定—即静态绑定

  而涉及到多态时需要对虚函数设置一个virtual tablel存放函数指针

4.结构体中分配的位数

struct mybitfields

{
    unsigned short a : 4;
    unsigned short b : 5;
    unsigned short c : 7;
} test
 
void main(void)
{
    int i;
    test.a = 2;
    test.b = 3;
    test.c = 0;
 
    i = *((short *)&test);
    printf("%d\n", i);
}

  其中冒号表示分配了几位空间,即 a : 4,b : 5, c : 7; 且按照以下方式排列

  根据main函数中对三值赋值结果来看其内存中的0/1分布为

  地址值      位

  0x11    0 0 1 0 (a) 0 0 0 1

  0x12    1(b) 0 0 0 0 0 0 0(c)

  或者

  0 0 0 0 0 0 0(c)0 0 0 1 1(b) 0 0 1 0(a)  十进制的50或者十六进制的0x0032(每4位计算一次)

  对test地址的数据进行short *强转 - short占两个字节即为50,再通过隐式的int转换变为0x00000032(50)

  

牛客网刷题总结—Day1的更多相关文章

  1. 牛客网刷题(纯java题型 31~60题)

    牛客网刷题(纯java题型 31~60题) 重写Override应该满足"三同一大一小"三同:方法名相同,参数列表相同,返回值相同或者子类的返回值是父类的子类(这一点是经过验证的) ...

  2. 牛客网刷题(纯java题型 1~30题)

    牛客网刷题(纯java题型 1~30题) 应该是先extend,然后implement class test extends A implements B { public static void m ...

  3. 【MySql】牛客SQL刷题(上)

    牛客SQL题目 题目链接:https://www.nowcoder.com/ta/sql 查找最晚入职员工的所有信息 select * from employees where hire_date = ...

  4. 牛客SQL刷题第一趴——非技术入门基础篇

    user_profile表: id device_id gender age university province 1 2138 male 21 北京大学 Beijing 2 3214 male   ...

  5. 牛客网算法题之All-in-All

    题目: 有两个字符串s 和t,如果即从s 中删除一些字符,将剩余的字符连接起来,即可获得t.则称t是s 的子序列.请你开发一个程序,判断t是否是s的子序列. 输入描述: 输入包含多组数据,每组数据包含 ...

  6. 牛客网补题 New Game!(原Wannafly summer camp day2原题)

    思路:这个题在秦皇岛的时候好像没有写出来,反正我是没有写出来,题解是听懂了:把直线和圆都看做一个结点,圆和直线用点到直线的距离与半径差求出来,圆和圆之间用点和点之间的距离和半径差表示,最后最短路跑一遍 ...

  7. 牛客SQL刷题第三趴——SQL大厂面试真题

    01 某音短视频 SQL156 各个视频的平均完播率 [描述]用户-视频互动表tb_user_video_log.(uid-用户ID, video_id-视频ID, start_time-开始观看时间 ...

  8. 牛客SQL刷题第三趴——SQL必知必会

    01检索数据 SQL60 从 Customers 表中检索所有的 ID 编写 SQL 语句,从 Customers 表中检索所有的cust_id select * from Customers; SQ ...

  9. java面试题错题集(牛客网错题)

    一.关于Object类的说法正确 Java中所有的类都直接或间接继承自Object,无论是否明确的指明,无论其是否是抽象类. Object的equals方法,只有一句话,return this==ob ...

随机推荐

  1. gulp常用插件之gulp-rev-outdated使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-rev-outdated这是一款旧的静态资产修订文件过滤器. 我们可以使用gulp rev来缓存一些资产.源文件的每次修改都会导致新的修 ...

  2. 题解 AT4556 【12/22】

    题目传送门. ___________ 主要思路 我们可以使用\(C++\)语言中的\(string\)字符串来解. 先定义一个字符串\(s\),并输入\(s\). string s; cin>& ...

  3. JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片

    代码如下: package com.futuredata.dataservice.util; import java.io.ByteArrayOutputStream; import java.io. ...

  4. C++->以读或写方式打开一个文件

    以读或写方式打开一个文件 #include<iostream.h>   //.h以C|非C标准引用库文件 #include<fstream.h> #include<std ...

  5. 常用命令 在linux下

    1.拷贝某个目录及其下的所有的文件到另外一个目录 语法:cp -r <source directory name>/ <destination directory name>/ ...

  6. Python-Django学习笔记(二)-创建一个Django项目与应用

    1.创建一个Django项目 打开cmd命令行,设置好工作目录(cd 目录路径),然后输入 django-admin startproject projectname #必须安装好Django才可以执 ...

  7. 如何在K3查找BOS单据在哪个子系统中

    select FFunctionID,* from ICClassType where FName_CHS like '%采购订单%'select FSubSysID,* from t_DataFlo ...

  8. 基于 Octotree 的[码云]文件树插件

      之前一直在用github上面的Octotree,现在在用gitee(主要是github的访问速度太慢了).   现在主要转到了gitee上面了,那么有没有基于 Octotree 的[码云]文件树插 ...

  9. 题解 CF1064A 【Make a triangle!】

    题目传送门 反正数学方法我是不会 那只能模拟了一只连模拟题解都看不懂的哀怨 我的思路大体如下 1.定义3个变量a,b,c并输入 int a,b,c; cin>>a>>b> ...

  10. Python-selenium,使用SenKey模块时所碰到的坑

    一.SenKey模块(模拟鼠标键盘操作) :python3中没有该模块,使用PyUserInput模块代替 二.PyUserInput模块安装前需要安装:pywin32和pyHook模块,pywin3 ...