一些过去CSP 的简单题总结出来的小知识

1. const用于声明一个变量, 其值不能被修改

  1. 如果想要在链表中插入一个新节点,其成员data的值为42,并使新节点成为链表的第一个 节点:首先,我们需要创建一个新的节点。然后,我们为新节点的数据成员赋值42。接下来,我们将新节点的next成员设置为当前的头节 点,最后更新头指针以指向新节点。这样,新节点就成为了链表的第一个节点。
  2. 对于高度为 h 的完全三叉树,其节点数最少为 3^0 + 3^1 + … + 3^(h-1)
  3.  高精度计算主要是用来处理大整数或需要保留多位小数的运算;大整数除以小整数的处理的步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累 加商;高精度加法运算的关键在于逐位相加并处理进位;高精度乘法的运算时间与两个整数的位数都有关,而不仅仅是长度较长者的位数
  4. 哈夫曼编码,又称为 Huffman Coding是一种可变长编码( VLC, variable length coding))方式,比起定长编码的 ASCII 编码来说,哈夫曼编码能节省很多的空间,因为每一个字符出现的频率不是一致的;哈夫曼编码首先会使用字符的频率创建一棵树,然后通过这个树的结构为每个字符生成一个特定的编码,出现频率高的字符使用较短的编码,出现频率低的则使用较长的编码,这样就会使编码之后的字符串平均长度降低,从而达到数据无损压缩的目的。
  5. 哈夫曼编码方法:
  1. 计算字符串中每个字符的频率
  2. 按照字符出现的频率进行排序,组成一个队列 Q出现频率最低的在前 面,出现频率高的在后面。
  3. 把这些字符作为叶子节点开始构建一颗哈夫曼树,哈夫曼树又称为最优 二叉树,是一种带权路径长度最短的二叉树
  4. 对字符进行编码编码原则是:对于每个非叶子节点,将 0 分配给连接线的左侧,1 分配给连接线的右侧,最终得到字符的编码就是从根节点开始,到该节点的路径上的 0 1 序列组合。

有关哈夫曼的题:

f0be5bcbb6f24fb3873229bcd58480c7.png 

做法:合并a(5%)和b(9%),得到新节点ab(14%)。

合并c(12%)和d(13%),得到新节点cd(25%)。

合并ab(14%)和e(16%),得到新节点abe(30%)。

合并cd(25%)和abe(30%),得到新节点abcde(55%)。

最后,合并abcde(55%)和f(45%),得到根节点 abcdef(100%)。

从哈夫曼树中,我们可以为每个字符生成哈夫曼编码。 从根节点开始,左子树的边表示1,右子树的边表示0。

4b7819070cc04f5090ad38f8551e824a.png 

  1. 前中后序遍历互相转换:

一、前序表达式转换为中序表达式:

从右往左开始,取出一个操作符和操作符右边的两个数进行计算,并将计算的结果放过去,直到计算结束。

二、后序表达式转换为中序表达式:

从左向右开始,取出一个操作符和操作符左边的两个数进行计算,并将计算的结果放过去,直到计算结束,以后序表达式“ab+cde+**”为例,将其转换为中序表达式:

  • 中序表达式转换为后序表达式:

这个有点复杂,我们假设中序表达式中只有+、*、(、),将中序表达式 a+b*c+(d*e+f)*g,转换为后序表达式:abc*+de*f+g*+,转换过程需要借助一个辅助栈,转换的规则是这样的:

从左向右扫描,遇到操作数,则直接输出;当遇到操作符(+、-、*)和左括号时,则从栈中弹出栈元素并写到输出直到发现优先级(+优先级最低,左括号优先级最高)更低的元素为止(注意,不弹出这个优先级更低的元素),但是有一个例外,即除非在处理右括号的时候,否则我们绝不从栈中弹出左括号,当从栈弹出元素的工作完成后,再将当操作符压入栈中;当遇到右括号的时候,则将栈中元素弹出并写入到输出直到遇到一个左括号,但是这个左括号只是被弹出,并没有写到输出中。如果从左向右扫描结束,栈中还有元素,则将栈中元素弹出并写到输出,直到栈为空。  

四、中序表达式转换为前序表达式

这个比较复杂,以中序表达式 2*3/(2-1)+3*(4-1)为例,转换规则如下

1、反转表达式,让它逆序排列,如2*3/(2-1)+3*(4-1),反转后为)1-4(*3+)1-2(/3*2

2、从字符串中取出下一个字符并处理:

2.1、如果是操作数,则直接输出

2.2、如果是),则压入栈中

2.3、如果是运算符,但不是( 也不是 ),则不断进行如下处理

2.3.1、如果栈为空,则此运算符入栈,结束此步骤

2.3.2、如果栈顶为),则此运算符入栈,结束此步骤

2.3.3、如果此运算符与栈顶元素优先级相同或更高,则此运算符入栈,结束此步骤

2.3.4、否则,执行连续的出栈操作,知道满足上述三个条件之一,结束此步骤

2.4、如果是(,执行连续的出栈操作,直到遇见)为止,并将)出栈且丢弃之

3、如果有更多的字符,则转到第2步

  1. 字符处理完毕,则执行连续的出栈操作,直到栈为空
  2. 再次反转表达式,得到最终的结果.
  3. 一道小题:         a6cf06a13e46446b8e2b1df8d14b5b26.png

 

1.从前序遍历中,我们知道A是根节点。

2.在中序遍历中, A之前的部分DEB是左子树, A之后的部分CFG是右子树。

3.对于左子树DEB,从前序遍历中我们知道B是左子树的根节点。

4.在中序遍历中, B之前的部分DE是B的左子树。

6.对于左子树DE,从前序遍历中我们知道D是左子树的根节点, E是D的右子节点。

7.对于右子树CFG,从前序遍历中我们知道C是右子树的根节点。

8.在中序遍历中, C之后的部分FG是C的右子树。

9.对于右子树FG,从前序遍历中我们知道F是右子树的根节点, G是F的右子节点。

10.根据上述分析,我们可以得到以下二叉树结构:

5a0ac4e9f5c24d7a8b66173e93b6daca.png

 

  1. 有向无环图:若一个有向图(有向图是一副具有方向性的图,是有一组顶点和一组有方向的边组成的,每条方向的边都连接着一对有序的顶点。全部由无向边构成图称为无向图中不存在环,则称为有向无环图。简称DAG图(Directed Acyclic Graph)顶点中不可能出现重复的操作数。

有向无环图一定是拓扑序列,有向有环图一定不是拓扑序列

  1. 操作系统是管理计算机硬件和软件资源的软件,它为计算机程序提供服务。Linux - Windows - Android - 是一个操作系统,主要用于移动设备,HTML - 是一种用于描述网页的标记语言,不是操作系统。
  2. 最长公共子序列可以不连续,但最长公共子串必须是连续的。
  3. 在 Linux 系统终端中,mkdir命令用于创建一个新的目录

13.Linux 系统中常用命令:

1e38b0f9e49d49b389d777948ba15fc2.png 

  1. 关于数据结构的一些小知识:

1.队列是一种先进先出(FIFO)「即先进先出」的线性结构

  2.哈夫曼树是带权路径长度最短的树,是用来解决最短编码问题的,和树的深度优先搜索无关。( 哈夫曼树通常以二叉树的形式出现,所以也称最优二叉树,是一类带权路径长度最短的树)

 

  3.散列表(即哈希表)是一种通过散列函数将关键字映射到存储位置的数据结构

   4.二叉树是一种每个结点最多有两个子结点的树结构

15 .哈希表(可以根据一个key值来直接访问数据,因此查找速度快)

417ccf5baa2146a88eaa67a1fb8da18e.png 

一般来说,实现哈希表可以采用两种方法:

  1. 数组+链表
  2. 数组+二叉树

举个栗子:(想到一等效替代法)

e0d9cbbc6a7a49c78bff5f9675db564a.png 

10.最长公共子序列相关的题66ab0277c0c84e25830a45fc56fb2c3a.png

 

下面给大家欣赏一下原稿,由于wps简体中文版本十分丑陋,而本人又没有VIP,所以只有用比丑陋的WPS简体中文版本,稍微好看一点,但是还是十分丑陋的WPS繁体中文ฅʕ•̫͡•ʔฅ( ⁼̴̀ .̫ ⁼̴ )✧

f1247eb45be647b5bb08a06d128b214d.png 

 

 

5177e8d0a79b4155828e15c84112a200.png

ced5132351974df8b8d8eb6fb38f4c54.png 

e4c419ef126945ab84f18240a4354e20.png 

9bc4cc713fea4262a1b3622ea2079f7a.png 

91835acb96ef4b43b8032a827ed2a68c.png不要在意5这个细节ʕ•̫͡• ʔ•̫͡•ཻʕ•̫͡•ʔ•͓͡•ʔ

 

7b32e734343247d181ec0f2623a4ce3e.png 

f63831cca8c04125878e86b69e493850.png 

21a6bebbf71f4aebbd2594d84101c7d4.png 

138b2af992a04c7689eec28d9bbaa99b.png 

 

5ef744ba0ccd4fc8aec9a7c945932e5c.png 

 54d7356155df438696ac2e9ccab5599a.png上面那张图有点看不清ヽ(✿゚▽゚)ノ,所以又发了一遍,再此感谢c知道

完结,撒花🎉

 

 

 

 

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CCF(中国计算机学会)CSP(中国软件专业人员认证)是国内一项重要的IT技术认证考试。CSP考试是由CCF组织和管理的,旨在评估考生在软件开发和项目管理领域的专业技能。 CSP认证试涵盖了多个方面的知识,包括软件工程、项目管理、数据库管理、网络技术等。试通常分为选择和编程两部分,对考生的理论知识和实际应用能力进行综合测试。 CCF CCF CSP认证试的难度适中,目涉及的知识点丰富。通过参加CSP考试,考生不仅可以提升自己的专业技能,还可以获得一个行业认可度较高的证书。 参加CSP考试有一定的门槛,要求考生具有一定的软件开发和项目管理经验。考生需要通过报名,参加线下考试,最终取得成绩。考试内容和难度每年可能会有所调整,考生需要及时了解最新的考试大纲和目要求,为考试做好充分准备。 对于有意参加CSP考试的人来说,可以通过查阅参考书籍、参加培训班、刷练习等方式来提高自己的知识和能力。此外,还可以参加相关的学术交流活动、讲座等,积极与其他从业人员交流,提高自己的专业水平。 CSP认证试的通过对于求职者来说具有一定的参考价值,可以证明自己在软件开发和项目管理领域的专业水平。对于企业来说,CSP认证也是一种可靠的招聘参考,可以帮助企业筛选出具备一定技术能力的人才。 总之,CCF CSP认证试是一个重要的IT技术认证考试,对于提升个人技术能力和求职竞争力具有一定的帮助。希望大家能够认真对待,做好充分准备,取得好的成绩。 ### 回答2: CCF(中国计算机学会)CSP(计算机软件专业技术资格认证)是中国计算机学会推出的一项专业认证考试。它旨在评估计算机软件专业人员的专业技术水平和能力。CSP认证试CSP考试的重要组成部分。 CSP认证试覆盖了计算机软件专业的各个领域,包括计算机系统基础、软件工程、算法与数据结构、程序设计语言、数据库、计算机网络等。试内容涵盖了理论知识和实际应用,旨在全面考核考生的综合能力。 CSP认证试设置了多种型,包括选择、填空、编程等。选择考查考生对知识点的理解和记忆,填空考查考生对概念和原理的掌握,编程则考查考生的实际编程能力和解决问的能力。 CSP认证试的难度逐级递增,旨在评估考生在计算机软件专业领域的深度和广度。考生需要通过对试的解答来展示自己的知识水平和能力。 参加CSP认证考试的考生可以通过自我学习、参加培训班等方式进行备考。在备考过程中,应重点掌握基础知识和常用技能,并通过解答CSP认证试进行实践和巩固。 总之,CCF CSP认证试是评估计算机软件专业人员能力的重要考核工具,通过备考和解答试,考生可以展示自己在该领域的技术水平和能力,取得CSP认证资格。 ### 回答3: CCF CSP认证试是由中国计算机学会(CCF)推出的一项计算机相关的职业技术认证。该认证试旨在评估考生在计算机科学与技术领域的理论知识和实际应用能力。通过参加并且通过CCF CSP认证试,考生可以获得相应的认证证书,这将有助于他们在职业发展和工作找寻方面的竞争力。 CCF CSP认证试包括多个专业领域,如算法设计与分析、计算机组成原理、数据库原理与应用、操作系统原理与应用、计算机网络等。试涵盖了计算机科学与技术的核心知识点和常见应用场景,以及对相关技术的理解和解决问的能力。 参加CCF CSP认证试需要考生具备扎实的计算机基础知识,熟悉常见的编程语言和工具,具备一定的编程能力和计算机系统分析与设计的经验。在考试中,除了理论知识的掌握外,考生还需要具备解决实际问的能力,能够独立思考,分析和解决具体的计算机科学与技术问。 通过CCF CSP认证试,考生可以证明自己在计算机领域的专业能力和知识水平,这对于求职或职业发展都具有积极的影响。同时,认证证书还能够作为考生在求职过程中的一个竞争优势,增加他们在相关职位的竞争力。 总之,CCF CSP认证试是一个评估计算机科学与技术素养的标准化考试,通过参加该考试并获得认证证书,考生可以证明自己的专业能力和知识水平,这对于提升职业竞争力和求职成功都具有积极的影响。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值