自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 资源 (28)
  • 收藏
  • 关注

原创 树模型面试题

xgboost

2022-07-25 17:45:09 286 1

原创 计算机网络和操作系统面试题

1. TCP三次握手第一次握手:客户端TCP进程也先建立传输控制块TCB,然后向服务端发送连接请求报文段,此时SYN=1,随机选定一个初始序号seq=x,,此报文不能携带数据,但是要消耗掉一个序号,发送完毕后,客户端进入SYN-SENT(同步已发送)状态第二次握手:服务端收到客户端请求连接报文段后,若同意建立连接,则发送确认报文,确认报文中SYN=1、ACK=1,确认号ack=x+1,同时随机选定一个自己序号seq=y,确认报文段同样不能携带数据,但是也要消耗掉一个序号,发送完毕后服务端进入SYN-RC

2022-02-25 20:04:32 766

原创 吴恩达深度学习:从logistic回归到深层神经网络

注意:这篇文章需要有logistic回归基础,可以参考我的这一篇文章吴恩达机器学习:从单变量线性回归到Logistic回归1. 神经网络概念首先我们要了解神经网络的形式,之所以被叫做神经网络,是因为它的工作原理和人的大脑神经相似。这是一个房屋预测的案例,我们输入房屋的大小,卧室的个数,邮政编码,财富,经过神经元的一系列计算,得到预测值price(房屋的价格)1. 前向传播和反向传播1.1. 前向传播假设我们有个神经网络,有这样一个代价函数J(a,b,c)=3(a+bc)=3(5+3×2.

2022-02-16 17:35:43 511

原创 机器学习:从决策树到xgboost

1. 决策树1.1. 决策树的定义决策树,顾名思义是用来做决策的,当我们决定一件事情要不要做的时候,会有很多条件。举个例子,我们决定明天要不要去打高尔夫,那么我们会考虑到明天的天气,温度等情况。这里的天气和温度就是特征,是否去打高尔夫就是类别标签。我简单画个图决策树的学习过程包括:特征选择、决策树生成、决策树剪枝。下面我将围绕这些过程讲解1.2. ID3算法这里要引入一些概念数据集的信息熵,信息熵反映了一个数据集的纯度,信息熵越大,样本纯度越低,不确定性越大。信息熵的计算公式条件熵,在

2021-12-30 20:22:43 1541

原创 吴恩达机器学习:从单变量线性回归到Logistic回归

单变量线性回归,多变量线性回归,logistic回归,正则化,过拟合

2021-12-29 11:17:57 749 1

原创 MySQL面试题整合

1. MySQL索引的底层数据结构是?为什么要设计索引?答:加快数据的查询效率设计索引的时候,使用什么数据结构,为什么?答:B+树问:为什么?哈希表也能存储,但是补充:扰动函数,让高位尽可能参与哈希值的运算,让数据更加散列二叉树和红黑树也能存储,但是缺点:深度太深,会频繁地在磁盘和内存间io,影响读取效率B树也可以存储,但是一个磁盘块的空间有限,data的存在会浪费空间,所以我们只用叶子节点来存数据,这样就构成了B+树。B+树:非叶子节点只负责搜索,这样存储的数

2021-09-24 09:41:15 455

原创 深入理解kafka

1. kafka架构1)Producer :消息生产者,就是向 kafka broker 发消息的客户端;2)Consumer :消息消费者,向 kafka broker 取消息的客户端;3)Consumer Group (CG):消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。4)Broker :一台 kafka 服务器就是一个 broke

2021-09-22 12:01:11 320

原创 深入理解spark

1. 结构spark是标准的主从结构,在yarn模式下,是由resourceManager负责调度,当一个任务提交的时候,会开启一个Driver,Driver会分配资源,划分任务,再向rm申请节点,节点过来后,在节点中开辟Executor,执行每一块任务。DriverSpark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作。Driver 在 Spark 作业执行时主要负责:➢ 将用户程序转化为作业(job) ➢ 在 Executor 之间调度任务(task)

2021-09-21 15:38:14 464

原创 深入理解Flume

1. Flume是干什么的flume是分布式的日志收集系统,它将各个服务器中的数据收集起来并送到指定的地方去,简单来说flume就是收集日志的Flume是用来监控,收集日志的。2. Flume架构flume之所以这么神奇,是源于它自身的一个设计,这个设计就是agent,agent本身是一个Java进程,运行在日志收集节点—所谓日志收集节点就是服务器节点。agent里面包含3个核心的组件:source—->channel—–>sink,类似生产者、仓库、消费者的架构。source:是

2021-09-15 16:32:36 150

原创 深入理解HBase

1. HBase概念HBase是基于Hadoop的非关系型数据库特点a.可以对海量数据进行随机,实时的读写操作b.可以存储海量数据:数十亿行 X 数百万列c.数据存储比较稀疏d.数据类型比较单一e.速度快在数据量非常巨大的情况下,没有那么慢2. 数据存储形式表(table)存储数据的基本单位列族(columnFamily)具有类似含义的列的集合,列属于哪个列族由行决定列(column)某个列族下的一个具体列行键(rowkey)代表当前行的唯一标识,独立于表中的任何字段

2021-09-09 19:26:11 345

原创 深入理解Hive

1. 数据库和数据仓库的区别数据库:真正存储和管理数据的,对数据有直接的处置权关心的事情是 在线事务过程(OLTP)数据仓库:可以利用一个或多个数据库的数据,进行数据分析。关心的事情是 在线分析过程(OLAP)2. hive运行原理写sql语句,hive内部自动转成MapReduce程序执行。原数据在hdfs上,sql语句需要使用表。表是以目录形式存在hdfs的某个指定位置(warehouse)可以通过数据加载的形式,把hdfs或本地的原数据加载到表(目录)中表里的数据实际上是存

2021-08-15 20:57:26 222

原创 深入理解zookeeper

1. 什么是zookeeperzookeeper是一个独立的分布式框架zookeeper = 文件系统 + 监听同步机制2. zookeeper的文件系统zookeeper中存在一个小型的文件系统。作用:存大家都关心的数据存在形式:树形结构存在,每个节点都是一个znode默认只有一个根节点(zookeeper)随着数据的增加,会不断壮大数据的存在形式:在每个znode上以键值对的形式存在key:znode的名字 value:具体存储的内容3. zookeeper选举机制

2021-08-03 13:21:08 216

原创 yarn运行机制

1. yarn的角色分配resourceManager所有节点资源管理的领导者,全局只有一个。NodeManager每个DataNode节点都存在的管理当前节点的管理者ApplicationMaster对于写好的代码进行任务的划分container容器,是一个抽象的概念。对集群中所有节点的资源进行重新分配,按照任务所需划分资源。2. 理解container从上图可以发现,container正是实现了集群对比单个机器的优势,就算job执行的要求比每一个单个机器配置更高,conta

2021-08-03 13:09:44 351

原创 深入理解Mapreduce(shuffle机制、数据倾斜、切片机制)

1. MapReduce介绍map:映射(键值对) 最小化数据单元,把每个单元以键值对的形式发送到下一个环节reduce:减少,合并。把map端送过来的最小化数据,按照key相同,value值做运算map阶段输出数据的形式:(key,value)---------------- shuffle机制 -----------------------------reduce阶段接收形式:(key,(value,value,value))注意:map读取数据是按行读取,key是偏移量,value是每一行

2021-08-02 17:06:08 293

原创 Java面试题(十):ReentrantLock底层原理

1. 可重入锁ReentrantLock翻译过来其实就是可重入锁,那么什么是可重入锁?简单来说,就是一把锁重复使用。以下就是一个可重入锁的机制,lock1.lock()已经获取到了lock1对象的锁,那么while里的lock1.lock()可以自动备货区,一把锁重复使用。这样的好处是什么?答:避免堵塞,提高效率,我们接下来解释一下为什么有这两个好处。避免堵塞:lock1.lock()获取lock1对象的锁,while1中的lock1.lock()也是尝试获取lock1对象的锁,但是lock

2021-07-17 10:36:32 1218 1

原创 深入理解HDFS

1. 文件块HDFS上的文件是分块存储的,默认每一块是128M,若一个文件是150M,那么它会被分成两个块存储,一个128M,一个22M。1.1. 为什么会有这样的规则呢?试想,当一个文件的大小为1T,计算机查找到它的时间是1s,但是读取它的世界可能就远远大于1s,这让文件的读取效率变得特别的低。为此,我们有一个规则:找到文件的时间 = 读取文件的时间*1%换言之,找到文件需要1s,读取文件需要100s,这个时间比例是比较合适的而目前磁盘的传输速率普遍是100M/s,经过计算,128M的块大

2021-07-16 15:18:25 164

原创 (经典栈类问题)leetcode:150逆波兰表达式求值

1. 后缀表达式求值后缀表达式也叫逆波兰表达式,其求值过程可以用到栈来辅助存储。假定待求值的后缀表达式为:6 5 2 3 + 8 * + 3 + *,则其求值过程如下:遍历表达式,遇到的数字首先放入栈中,此时栈如下所示:接着读到“+”,则弹出3和2,执行3+2,计算结果等于5,并将5压入到栈中。读到8,将其直接放入栈中。读到“”,弹出8和5,执行85,并将结果40压入栈中。而后过程类似,读到“+”,将40和5弹出,将40+5的结果45压入栈…以此类推。最后求的值288。2.

2021-06-25 14:00:15 98

原创 Java面试题(九):synchronized

1. 对象信息的存储对象的信息实际上是存在与堆中的,而方法区中则是存类的信息。为什么非要8的整数倍?答:可以保证内存的利用率1.1. 对象头中MarkWord偏向锁:只有一个线程能用(专用)当对象使用过hashCode方法的时候不能产生偏向锁,直接产生轻量级锁。2. synchronized锁升级2.1. 偏向锁升级为轻量级锁当是单线程的时候,偏向锁只能由一个线程使用,而当再增加一个线程的时候,偏向锁会向轻量级锁升级2.2. 轻量级锁升级为重量级锁当自旋时间超时,就会变

2021-06-17 23:00:59 431

原创 Java面试题(八):JVM

1. 内存结构程序计数器虚拟机栈本地方法栈堆方法区1.1. 程序计数器1.1. 作用程序计数器的作用就是在指令执行的过程中,记住下一条指令的执行地址。二进制字节码前面的数字就恶意看作是内存地址当getstatic命令被解释器拿到的时候,程序计数器会记录下一条指令的地址,也就是astore_1的地址3,下一次解释器就是从程序计数器里拿到下一条指令的地址3,以此类推。程序计数器的物理上是由寄存器实现的,寄存器是cpu里读取速度最快的单元。1.2. 特点线程私有:每个线程都

2021-06-17 19:23:05 544 6

原创 Java面试题(七):集合类面试题

HashMap面试题1. HashMap1.1. 哈希值、哈希表、哈希函数哈希值:通过一定的散列算法,把一个不固定长度的输入,转换为固定长度的输出,结果我们称之为哈希值(hash)。map中,hash就是一个int值。在JDK1.7之前,HashMap采用数组+链表的形式存储数据,查找的时候,先通过hashCode查找数组下标,要是数组下标的位置有链表,那就再遍历链表通过equals方法查找,要是hash冲突很严重(链表很长),这样是很耗时的。1.2. HashMap的长度问:Hash

2021-06-16 17:58:43 2789 1

原创 Java面试题(六):线程池(原理)

1. 线程池的优点线程池的底层是阻塞队列2. 三种线程池这三种线程池的底层都是用ThreadPoolExecutor和阻塞队列(BlockingQueue)实现的,例如newCachedThreadPool的底层3. 线程池七大参数我们点开底层代码,发现线程池实现其实是有七大参数,那为什么上面只有五大参数呢?3.1 corePoolSize(今日当值线程)4. 线程池底层工作原理要是5个线程都满了,阻塞队列也满了,那么就到了第4步,开启拒绝策略,拒绝策略分为四种。要是第4步

2021-06-08 17:03:41 1227

原创 Java面试题(五):多种锁和阻塞队列

1. 悲观锁和乐观锁1.1. 乐观锁顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,乐观锁在Java中是通过使用无锁编程来实现,最常采用的是CAS算法,Java原子类中的递增操作就通过CAS自旋实现的。CAS全称 Compare And Swap(比较与交换),是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。java.util.conc

2021-06-07 17:39:37 287 2

原创 Java面试题(四):JUC

1. 闭锁CountDownLatch有些操作,是要等其它线程的计算全部完成才能执行,这就是闭锁。为此,JUC提供了CountDownLatch,传入一个整数,在其它线程里可以使这个整数减1,当这个整数为0的时候,对应的操作才会执行。2. Callable创建执行线程我们熟知的创建执行线程的方式有两种:继承Thread类实现Runnable方法其实创建执行线程,有四种方法,这里介绍第三种:实现Callable接口,它与Runnable接口有一定的区别。3. 同步锁(Lock)解决线

2021-06-04 18:54:43 601 1

原创 Java面试题(三)集合类线程不安全

1. ArrayList线程不安全1.1. 面试题我们知道ArrayList是线程不安全的,那么请写出一个案例,证明ArrayList的线程不安全。首先明白什么是线程不安全,其实在多个线程同时写入同一个ArrayList中的时候,会报错,这个错误叫并发修改异常。所以这道题很简单,我们创建一个ArrayList对象,再创建多个线程,这些线程全部调用这个对象的add方法,就会报错。1.2. 如何解决并发修改异常?方法1:将ArrayList换成Vector,Vector的add方法是加有syn

2021-06-03 18:58:28 250 2

原创 Java面试题(二)JMM,volatile,CAS

1. JMM主内存:共享区域,就是内存条工作内存:每个线程的内存,是线程独有的。JMM的性质:可见性原子性有序性JMM规范是大多数并发编程所要遵守的规范。可见性:当其中一个线程对共享变量完成更改的时候,那么其它线程就会第一时间更新自己的共享变量的副本(及时通知)。......

2021-06-02 19:57:19 283 4

原创 Java基础高频面试题(一):对象的创建

1. 题目描述写一个Father类写一个Son类继承Father问题:这段代码的运行结果是什么?2. 考点这道题的考点有三个类初始化过程一个类要创建实例需要先加载并初始化该类main方法所在的类需要先初始化一个子类要初始化,必须先初始化父类一个类初始化就是执行< clinit>()方法< clinit>()方法由静态类变量显示赋值代码和静态代码块组成类变量显示赋值代码和静态代码块代码从上到下顺序执行< clinit>()方法只执

2021-05-26 17:53:14 161

原创 快速排序java实现

import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int[] arr = {5,3,6,8,9,4,2}; quickSort(arr, 0, arr.length - 1); System.out.println(Arrays.toString(arr)); } public static int

2021-05-18 20:55:18 52

原创 归并排序java实现

public class Merge { public static void main(String[] args) { int[] arr = {1,3,5,2,4,6,6,5,1,2,3}; mergeSort(arr, 0, arr.length - 1); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); }

2021-05-18 18:19:50 59

原创 Hadoop和yarn面试题(详解)

Hadoop优化有哪些方面列出正常工作的hadoop集群中hadoop都分别启动哪些进程以及他们的作用Hadoop总job和Tasks之间的区别是什么?Hadoop高可用HA模式简要描述安装配置一个hadoop集群的步骤fsimage和edit的区别yarn的三大调度策略hadoop的shell命令用的多吗?,说出一些常用的用mr实现用户pv的top10?1. Hadoop优化有哪些方面0)HDFS 小文件影响(1)影响 NameNode 的寿命,因为文件元数据存储在 Nam..

2021-05-10 17:43:36 378

原创 MapReduce面试题(详解)

Mapreduce 的 map 数量 和 reduce 数量是由什么决定的 ,怎么配置map数量是由任务提交时,传来的切片信息决定的,切片有多少,map数量就有多少科普:什么是切片?切片的数量怎么决定?举例:输入路径中有两个文件,a.txt(130M),b.txt(1M),切片是一块128M,但是不会跨越文件,每个文件单独切片,所以这个路径提交之后获得的切片数量是3,大小分别是128M,2M,1Mreduce的数量是可以自己设置的...

2021-05-10 17:33:34 2388

原创 HDFS面试题(详解)

本文会对HDFS常见面试题进行详解,并且后续持续更新本次内容:1.hdfs写流程2.hdfs读流程3.hdfs的体系结构4.一个datanode 宕机,怎么一个流程恢复5.hadoop 的 namenode 宕机,怎么解决6.namenode对元数据的管理、7. namenode工作原理1. hdfs写流程(必背)我们来看一下这张图片,步骤都有序号,看五分钟肯定能看会,理解记忆就行了1)客户端通过DistributedFileSystem模块向NameNode请求上传.

2021-05-07 11:23:18 906

原创 Flink的常用算子以及实例(详解)

1. map特性:接收一个数据,经过处理之后,就返回一个数据1.1. 源码分析我们来看看map的源码map需要接收一个MapFunction<T,R>的对象,其中泛型T表示传入的数据类型,R表示经过处理之后输出的数据类型我们继续往下点,看看MapFunction<T,R>的源码这是一个接口,那么在代码中,我们就需要实现这个接口1.2. 案例那么我们现在要实现一个功能,就是从给一个文件中读取数据,返回每一行的字符串长度。我们要读取的文件内容如下代码贴在这

2021-04-23 16:46:31 3738

原创 线性代数学习(二):向量

学习物理的人喜欢把向量叫做向量学习数学的人喜欢把向量叫做矢量我们要知道的是:向量 = 矢量1. 矢量(向量)的基本概念矢量:既有方向又有长度的量交矢量标量:只有长度,没有方向的量,叫标量1.1. 矢量的加法1.3. 向量加法深入理解从上图发现,我们只要不改变向量的长度和方向,在平面内随意平移那个向量,向量是不变的。我们以一个向量的加法为例其实在图上反映出向量的加法就是这样的1.4. 向量的乘法和零向量的定义1.5. 向量乘法深入理解先举出第一个例子当c = -1的

2021-04-17 15:35:53 2096

原创 线性代数学习(一):大致矩阵介绍

1. 矩阵矩阵的相加,相减以及矩阵乘以常数都很好理解,但是矩阵乘以矩阵就不太好理解了。1.1. 矩阵 × 矩阵第一个矩阵的每一行乘以第二个矩阵的每一列,对应位置就是值。A(2,2) * B(2,2) = CA的第一行乘以B的第一列,就是C的第一行第一列的值,A的第二行乘以B的第二列就是C的第二行第二列的值,在矩阵的乘法中,都是整行整列的乘写两个题练手:注意:矩阵的乘法不符合交换律2.2. 矩阵的逆2.2.1. 单位矩阵由上图可知,单位矩阵就是对角线为1,其余位置都是0的矩阵就是

2021-04-17 12:05:25 238

原创 leetcode题目:5.最长回文字符串

1. 题目分析这道题有一个新的思想,解决这类题型都可以用到,那就是中心扩散法,在这里给出一篇很好的文章,通俗易懂。中心扩散法2. 代码实现2.1. Python代码class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ start,maxlen = 0,0 for i in

2021-04-16 20:14:48 61

原创 leetcode题目27&&283:双指针思想

这一讲呢,我们主要是要将双指针思想讲明白,因为我发现双指针思想灵活方便,而且可以应用到leetcode很多热门题,可以用在很多地方。1. leetcode:27(双指针解法)1.1. 题目分析这道题刚开始我的想法太过简单,用一个指针遍历,遇见相同的就直接删掉,往前移动,但是这样你会发现,数组的长度在不断变换,那个指针的阈值根本没办法确定,自然而然我们就能想到另一个方法----双指针法。基本思想:用覆盖的思想,准备两个指针 i 和 j ,这里我们直接给出图解。最后,0-i上的值就是我们想

2021-04-16 18:49:31 72

原创 leetcode题目:3. 无重复字符的最长子串

1. 题目分析基本思路:指针指向第一个元素,之后创建一个空数组lst遍历字符串,每遍历一个,就放入lst中,直到发现锁遍历的这个元素在lst中存在为止删除lst中0-a的所有元素,当然这里只有a继续操作,直到字符串遍历完成2. 代码实现2.1. Python代码class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rt

2021-04-13 19:59:46 54

原创 leetcode题目:2. 两数相加

1. 题目分析这个题目的意思很明显,我们可以将上述链表分为以下三种情况。长度相等,但是最后一位相加不大于10。长度相等,最后一位相加大于10。长度不相等。第一种情况,按顺序简单相加即可第二种情况可以发现,6和4相加大于10,也就是说,我们需要在原基础上再增加一个节点存放1。第三种情况这个时候就需要我们判断,是谁先遍历完成。基本思路:设置变量n = 0,当两个节点相加大于10等于的时候,将n赋值为1,若小于10,则赋值为0,当下一对节点相加的时候,直接带上n就

2021-04-13 18:33:01 71

原创 统计学习方法啃书指导(二):感知机模型

1. 感知机模型在机器学习中的地位首先很明确的是,感知机是机器学习中最原始的一个算法,性能很差,效果很差,但是在机器学习发展的历史长河上,这个算法功不可没。之后的所有算法,都是在它的基础上提出的,或多或少优化了它的很多缺陷,所以我们要了解这个算法。2. 引例红豆和绿豆在一个盘子里,当我们放入一个豆子的时候,我们需要让盘子自动将它归类(红豆或绿豆),以下就这个盘子可以看到,黄色的线和紫色的线都是好的直线,但是红色的线,并没有将其完全分开。试想:要是我们无法选择一根好的直线,那么我们是不是就要在

2021-04-13 16:07:35 126

原创 leetcode题目:406. 根据身高重建队列(贪心算法)

1. 题目分析本题有两个维度,h和k,看到这种题目一定要想如何确定一个维度,然后在按照另一个维度重新排列。我们不能h和k一起考虑,这样会顾此失彼,我们必须先确定一个维度,h或者k。如果按照k来从小到大排序,排完之后,会发现k的排列并不符合条件,身高也不符合条件,两个维度哪一个都没确定下来。思路:按照k从高到底排序,这样前面的k一定高于后面的,在重新创建一个队列,遍历排序后的数组,再重新插入就行了。我们拿第一个样例来说排序完的people:[[7,0], [7,1], [6,1],

2021-04-13 15:40:02 105

FlinkTutorial.rar

本资源与我的文章配套使用

2021-04-23

C/C++:运动会分数统计问题.rar(含注释)

参加运动会有 n 个学校,学校编号为 1……n。比赛分成 m 个男子项目,和 w 个女子项目。项目 编号为男子 1……m,女子 m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为: 7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。 设计要求如下: 1).可以输入各个项目的前三名或前五名的成绩; 2).能统计各学校总分 3).可以按学校编号、学校总分、男女团体总分排序输出; 4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

2021-03-04

C/C++:简单的班级成绩管理系统的链表实现.rar(含完整注释)

简单的班级成绩管理系统的链表实现

2021-03-04

C/C++:符串排序.rar(含完整注释)

给定 n 个字符串,在这 n 个字符串中有相同的字符串,不同的字符串只有 num 个。要求首先输 入字符串的个数 n,然后输入 n 个字符串,将这 n 个字符串中 num 个不同的字符串按照字典序排序, 并输出每个字符串在这 n 个字符串中所占的比例,精确到 4 位小数。 例如: 若输入: 29 Red Alder Ash Aspen Basswood Ash Beech Yellow Birch Ash Cherry Cottonwood Ash Cypress Red Elm Gum Hackberry White Oak Hickory Pecan Hard Maple White Oak Soft Maple Red Oak Red Oak White Oak Poplan Sassafras Sycamore Black Walnut Willow 则输出: Ash 13.7931 19 Aspen 3.4483 Basswood 3.4483 Beech 3.4483 Black Walnut 3.4483 Cherry 3.4483 Cottonwood 3.4483 Cypress 3.4483 Gum 3.4483 Hackberry 3.4483 Hard Maple 3.4483 Hickory 3.4483 Pecan 3.4483 Poplan 3.4483 Red Alder 3.4483 Red Elm 3.4483 Red Oak 6.8966 Sassafras 3.4483 Soft Maple 3.4483 Sycamore 3.4483 White Oak 10.3448 Willow 3.4483 Yellow Birch 3.4483

2021-03-04

C/C++:二叉排序树.rar(含完整注释)

设二叉排序树的二叉链表存储结构的类型定义如下: typedef struct node{ int data; //用整数表示一个结点的名 struct node *LChild,*RChild; //左右指针域 }BSTNode,*BSTree; 设计算法并编写程序求解以下几个问题。 8 12 14 10 7 3 15 6 2 4 1 5 11 9 13 16 13 (1)键盘输入一个元素序列创建一棵二叉排序树,输出该二叉排序树的中序遍历序列; 例如,若输入 45,24,55,12,37,53,60,23,40,70 则创建的二叉排序树为: 输出结果为:12 23 24 37 40 45 53 55 60 70 (2)在(1)中所得的二叉排序树中插入一个值为 58 的结点,再输出它的中序遍历序列,输出 结果为:12 23 24 37 40 45 53 55 58 60 70 (3)在(1)中所得的二叉排序树中删除值为 45 的结点,再输出它的中序遍历序列,输出结果 为:12 23 24 37 40 53 55 58 60 70 (4)利用(1)中所得的二叉排序树的所有叶子结点构造一个带头结点的单链表 L。要求不能 破坏这棵二叉排序树。所得的单链表 L 如下。 输出该链表各结点的值,输出结果为:23 40 53 70 (5)设计算法将(1)中所得的二叉排序树的左右子树进行交换,由于二叉树是一种递归定义, 所以子树的左右两棵子树也要相交换,依此类推。最后输出所得到的二叉树的中序遍历序列。 例如,经过上述操作后,(1)中所得的二叉排序树变为如下形式。 输出该二叉树的中序序列,结果为:70 60 55 53 45 40 37 24 23 12 (6)设计算法统计并输出(1)中所得的二叉排序树中只有一个孩子结点的结点个数。输出结 果为:3(7)在(1)中所得的二叉排序树中,设计算法并编写程序输出结点 40 的所有祖先结点。输 出结果为:45 24 37

2021-03-04

C/C++:实现迷宫问题的最优解的非递归算法.rar(含完整注释)

C/C++:实现迷宫问题的最优解的非递归算法.rar(含完整注释)

2021-03-04

C/C++:一元多项式的表示及其运算.rar(含注释)

符号多项式的操作,已经成为表处理的典型用例。在数学上,一个一元多项式Pn(x)可按升幂写 成: Pn(x) = p0+ p1x+ p2x2+….+ pnxn 它由n+1个系数唯一确定,因此,在计算机里,它可用一个线 性表P来表示: P = (p0 ,p1 ,p2 ,… pn)每一项的指数i隐含在其系数pi的序号里。 假设Qm(x)是一元m次多项式,同样可用线性表Q来表示:Q = (q0 ,q1 ,q2 ,… qm)。 不失一般性,设m<n,则两个多项式相加的结果 Rn(x) = Pn(x)+Qm(x)可用线性表R表示:R = (p0+q0 , p1+q1 , p2 +q2 , … , pm +qm , pm+1 ,… pn)。显然,我们可以对P、Q和R采用顺序存储结构, 使得多项式相加的算法定义十分简洁。至此,一元多项式的表示及相加问题似乎已经解决了。 然而在通常的应用中,多项式的次数可能很高且变化很大,使得顺序存储结构的最大长度很难 决定。特别是在处理形如:S(x) = 1+3x10000+2x20000的多项式时,就要用一长度为20001的线性表来 表示,表中仅有三个非零元素,这种对内存空间的浪费是应当避免的,但是如果只存储非零系数项 则显然必须同时存储相应的指数。 一般情况下的一元n次多项式可写成: Pn(x) = p1x e1 + p2x e2 + … + pmx em 其中 pi,是指数为 ei 的项的非零系数,且满足 0 ≤ e1 < e2 < …< em = n,若用一个长度为 m 且 每个元素有两个数据项(系数项和指数项)的线性表便可唯一确定多项式 Pn(x)。 ((p1 ,e1) , (p2 ,e2) , … ,(pm,em)) 在最坏情况下,n+1(=m)个系数都不为零,则比只存储每项系数的方案要多存储一倍的数据。但 是,对于 S(x)类的多项式,这种表示将大大节省空间。 本题要求选用线性表的一种合适的存储结构来表示一个一元多项式,并在此结构上实现一元多 项式的加法,减法和乘法操作

2021-03-04

C/C++:八皇后问题.rar(含完整注释)

设计程序完成如下要求:在 8×8 的国际象棋棋盘上,放置 8 个皇后,使得这 8 个棋子不能互 相被对方吃掉。要求:依次输出各种成功的放置方法。

2021-03-04

C/C++:实现迷宫问题的最优解的递归算法.rar(含完整注释)

实现迷宫问题的最优解的递归算法

2021-03-04

C/C++:二叉排序树中的最小结点和最大结点.rar(含完整注释)

给定一棵无穷的满二叉排序树,结点的编号是 1,2,3,4,…,即该二叉排序树的中序遍历序 列是从 1 开始的递增有序序列。如下图所示。 对于树中一棵根结点的编号为 X 的子树来说,沿着 X 的左孩子结点,以及左孩子结点的左孩子 结点,一路向左直至到达最后一层,可以获得以 X 为根的树中编号最小的结点;若沿着 X 的右孩子 结点,以及右孩子结点的右孩子结点,一路向右直至到达最后一层,可以获得以 X 为根的树中编号 最大的结点。 现在的问题是,在一棵根为 X 的子树中,结点的最小编号和最大编号分别是什么? 要求输入一个整数 X,表示一棵子树的根结点的编号,输出以 X 为根的树中结点的最小编号和 最大编号。 例如: 若输入: 8 则输出: 1 15 若输入: 12 则输出: 9 15

2021-03-04

C/C++:算术表达式求值问题.rar(含完整注释)

问题描述:根据算术运算符的优先级,根据输入的算术表达式,求表达式的值。 例如,输入的算术表达式形式为:12+32*4, 3*(12+24/(2+4)), 3.6*(4.3+5)

2021-03-04

C++:马踏棋盘问题(非递归)(含完整注释).rar

设计问题:有一个 8*8 的方格棋盘(如下图所示),现有一匹马从任意一个位置(方格)出发, 给出一种方案使马走遍棋盘中的每一个方格,且每个方格只走过一次(马走日字)。 程序的输入:输入马的初始位置(相应的坐标)。 程序的输出:马从初始位置走遍棋盘的过程

2021-03-04

C/C++:任意长的整数加法.rar(含完整注释)

问题描述:设计一个程序实现两个任意长的整数的求和运算。 基本要求:利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000.

2021-03-04

C/C++:敢死队问题求解.rar(含完整注释)

有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。以此类推,直到任务完成为止。 排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。 要求,至少采用两种不同的数据结构的方法实现。如果采用三种以上的方法者,可加分。

2021-03-04

C/C++:小球下落问题求解.rar(含完整注释)

给定一棵深度为 depth 的满二叉树,并对该二叉树从根结点开始自上而下,每一层从左到右, 从 1 开始进行编号,则结点的编号序列就是 1,2,3,…,2depth-1。如下图给出的深度为 4 的满二叉树。 现在在结点 1 处放一个小球,它会往下落。二叉树中每个结点处都有一个开关,初始时全部关 闭,每当有小球落到一个结点时,该结点上的开关的状态就会改变。当一个小球落到某个结点时, 如果该结点上的开关的状态是打开的,则往左走,否则,往右走,直到走到叶子结点。 现在有 number 个小球依次从结点 1 处开始下落,那么最后一个小球将会落到哪里呢? 输入满二叉树的深度 depth(depth<=10)和小球个数 number,输出第 number 个小球最后所在 的叶子结点的编号。 例如: 若输入 4 2,则输出 12 若输入 3 4,则输出 7 若输入 10 1,则输出 512 若输入 2 2,则输出 3 若输入 8 128,则输出 255

2021-03-04

C/C++:利用队列实现迷宫问题求解.rar(含完整注释)

利用队列实现迷宫问题求解

2021-03-04

C/C++:简单书目管理系统.rar(含完整注释)

问题描述:在图书馆中,通常图书采用多级分类管理,即将图书分类目录(简称书目)利用目 录树的形式来表示,如下图所示。 现要求设计一个简单的书目管理系统,其功能如下: (1)书目的显示功能:要求以“树型的层次结构”显示所有图书分类。 (2)书目的维护功能:包括添加、删除、修改等。具体如下: ① 添加书目:能够向目录树中添加新书目。 ② 删除书目:删除某个指定书目。删除某个书目时,若其还有下级书目,则还须删除其所有 的下级书目。 ③ 修改书目:修改书目信息。 (3)书目的查询功能。其查询结果应为从根目录至此目录的路径。

2021-03-04

C/C++:哈夫曼编译码器.rar(含完整注释)

设计一个哈夫曼编码/译码系统,对字符串进行编码和译码 基本要求: ⚫ 从文件中读取一篇英文文档(文本文件 1),统计文档中各个字符出现的次数; ⚫ 以各个字符出现的次数(或概率)为叶子结点的权值构造一棵哈夫曼树,并为每个叶子结 点构造哈夫曼编码; ⚫ 输出每个叶子结点的哈夫曼编码; ⚫ 计算并输出字符的平均编码长度(精确到小数点后两位)。 ⚫ 将该英文文档内容转换成对应的电文编码,并保存在一个文本文件 2 中。 ⚫ 将上一步得到的文件中的电文编码,还原为原来的英文内容,并再保存在一个文本文件 3 中; ⚫ 比较文件 1 和文件 2 是否完全一致并输出。

2021-03-04

C/C++:宿舍管理查询软件的设计.rar(含完整注释)

1)任务:为宿舍管理人员编写一个宿舍管理查询软件,程序设计要求:A.采用交互工作方式 B.(建立数据文件,数据文件按关键字(姓名、学号、宿舍号)进行排序(冒泡、选择、插入排序等任选一种) (2)查询菜单:(用二分查找实现以下操作)A.按姓名查询 B.按学号查询c.按宿舍号查询 3)打印任一查询结果(可以连续操作)

2021-03-04

C/C++:由先序序列和中序序列创建二叉树.rar(含完整注释)

定义二叉树的存储结构,由给定的一棵二叉树的先序序列和中序序列来创建二叉树,并输出二叉树的其它遍历序列

2021-03-04

C/C++:二叉树的非递归遍历及其他操作(含完整注释)

定义二叉树的存储结构,采用非递归算法实现二叉树的二叉树的先序、中序、后序和按层遍历。并实现求二叉树的深度、求总结点数、求叶子结点、查找某个结点等操作(可以采用递归)。

2021-01-10

以太坊智能合约Dpp投票系统

一个简单的智能合约的DApp投票系统,包含前端代码和合约代码的实现,可直接运行

2021-01-10

C语言:学生信息管理系统(含完整注释)

设计完成一个简单的学生信息管理系统,其实现的主要功能如下。(1)录入功能:能够向学生信息表中添加某位或某些学生信息。(2)查询功能:能够按照给定关键字“学号”或“姓名”,在学生信息表中查找符合条件的学生信息;(3)删除功能:能够按照学号删除某个同学信息。(4)报表显示功能:能够以报表的方式显示某班级所有学生的数据信息,要求给出两种班级报表,一种是按学号排序的报表,另一种是按学生成绩排序的报表。要求:(1)学生信息以文件的形式保存。(2)应按需求建立相应的索引文件。(3)充分利用折半查找算法进行查询。

2021-01-09

C语言:一元多项式的表示及其运算(含注释)

能够计算一元多项式相加的程序,注释完整,一看就懂,300多行的代码

2021-01-08

C语言:基于散列表的电话号码查询系统(含完整注释)

设计散列表实现电话号码查找系统。【基本要求】 1)设每个记录有下列数据项:电话号码、用户名、地址﹔ 2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;3)采用一定的方法解决冲突; 4)查找并显示给定电话号码的记录;5)查找并显示给定用户名的记录。【进一步完成内容】 1)系统功能的完善; 2)设计不同的散列函数,比较冲突率; 3)在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。

2021-01-08

C语言:航空客运订票系统的设计(含完整注释)_飞机订票系统设计C语言

航空客运订票系统的业务主要包括:查询航线,客票预订,办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。 (1)每条航线所涉及的信息有:终点站名,航班号,飞机号,飞行周日(星期几),乘员定额,余票量。乘客信息有:乘客名,预订票数,航班号。 (2)系统的主要功能是: 1)查询航线,根据旅客提出的终点站名输出下列信息,航班号,飞机号,星期几飞行;最近一天航班的日期和余票量。 2)承办订票业务,根据客户提出的要求(航班号,订票量)查询该航班的票余量,如果尚有余票,则为客户办理手续,输出座位号,若已经满员或者余票少于订票额,则需要重新询问客户要求,若需要,则为客户登记排队候补。

2021-01-08

C语言:基于哈希表的姓名查找(含完整注释)

任务:针对某个集体(比如你所在的班级)中的“姓名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。 要求:假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为⒉哈希函数用除留余数法构造,用伪随机探测再散列法和拉链法处理冲突。

2021-01-08

C语言:模拟计算机器程序(含完整注释)_计算机二级c语言难吗

设计一个模拟计算机器程序,要求能对包含加、减、乘、除、括号运算符及 SQR 和 ABS 函数的 任意整型表达式进行求解。要求:运算前应先检查有关运算条件,并对错误产生报警。

2021-01-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除