自定义博客皮肤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)
  • 收藏
  • 关注

原创 统计学习方法啃书指导(一):统计学习方法概论

1. 监督学习概念:就像小时候父母教我们认识一直鸭子,涨了翅膀,嘴巴扁平的是鸭子,当父母给我们指出很多次鸭子的时候,我们就会自己从鸭子身上找到特征。下一次我们再遇见一个动物的时候,就会根据他的特征来判断是否是一只鸭子。举个例子那么在这里就涉及到两个很重要的概念呢,特征值和目标值,从表中我们可以发现,通过一个男生的体重,身高,年龄等信息来判断是否招女孩子喜欢。特征值:体重,身高,年龄,成绩目标值:是否招女孩子喜欢训练集是中包含的很多个数据(x1,y1)这一第一个数据,其中x1是特征值,y

2021-04-07 21:17:19 134

原创 计数排序和桶排序

刷到了一道leetcode算法题,虽然不难,但是却让我寸步难行,因为在此之前,我从未了解过计数排序和桶排序。1. 题目分析这道题看上去不难,但是若不了解计数排序和桶排序的概念,会绕很大的圈子,那我们现在来看一下什么是计数排序和桶排序。2. 计数排序目前我们所了解的最快的排序就是快速排序,但是有没有一些特定的区块,一些排序方式的速度超过快速排序呢?1. 什么是计数排序?计数排序是一种基于下标的排序,给出图解假定20个随机整数的值如下:9,3,5,4,9,1,2,7,8,1,3,6,5,3,

2021-04-02 14:19:29 98

原创 leetcode题目:637.二叉树的层平均值

1. 题目分析一看这道题,我们就能想到按层遍历,一想到按层遍历,我们就想到了队列。基本思想:用队列实现按层遍历给出图解2. 代码实现2.1. Python代码# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left

2021-03-16 20:22:29 55

原创 leetcode题目:141.环形链表

1. 题目分析在这里我们给两个解题思想基本思想1:哈希表遍历链表用一个哈希表来标记被访问过的点若这个点第二次被访问到,则证明这个链表有回路基本思想2:龟兔赛跑算法定义两个指针,一前一后,前面的那个是兔子,后面那个是乌龟,兔子比乌龟跑得快,兔子一次抛两格,乌龟一次抛一格若这个链表没有回路,则乌龟永远也不可能和兔子相遇,若乌龟与兔子相遇,只能说明这个链表有回路给出图解我们今天用第二种基本思想来实现这个算法2. 代码实现2.1. Python代码# Defini

2021-03-16 20:01:08 61

原创 机器学习(三):分类算法

学习分类算法之前,首先目标,什么是分类,分类数据集就是目标值是类别的,比如男,女。简而言之,分类算法就是用来解决目标值为类别的数据集的算法1. 转换器和估计器1.1. 转换器回忆一下特征工程步骤:实例化 (实例化的是一个转换器类(Transformer))调用fit_transform(对于文档建立分类词频矩阵,不能同时调用)我们把特征工程的接口称之为转换器,转换器中封装了所有特征工程需要的方法1.2. 估计器(sklearn机器学习算法的实现)获得一个估计器estimator(估计

2021-03-16 18:54:43 1206

原创 leetcode题目:24.反转链表

1. 题目分析这道题,我们也用两种方法来写基本思想1:反转这种的,我们都可以想到栈这种数据结构利用栈的特性就能解决基本思想2:使用双指针,定义一个前驱指针pre,再定义一个当前节点curcur.next = pre,这样就能实现反转这一次,我们拉钩方法都用,基本思想1我们用java来实现,基本思想2用python来实现2. 代码实现2.1. Python代码(基本思想2)# Definition for singly-linked list.# class List

2021-03-14 17:08:33 43

原创 leetcode题目:22.链表中倒数第k个节点

1. 题目分析这道题主要是有两种思想。基本思想1:我们需要的是返回后k个节点,这让我第一时间联想到了栈的性质设置两个栈,就能解决,下面给出图解准备好我们需要的变量基本思想2:就是我们经常用的双指针,而且是同步的双指针给出图解在这里,我们用栈的方法来实现。2. 代码实现2.1. Python代码# Definition for singly-linked list.# class ListNode(object):# def __init_

2021-03-14 17:00:29 53

原创 leetcode题目:203.移除链表元素

1. 题目分析其实链表删除元素这种算法可以说是很熟练了,但是在这里有一个思想很重要,就是头节点的思想。基本思想:我们只需要遍历这个链表,把对应的元素删除就行了,但是当要删除的是头节点的时候,情况就变得比较复杂了。这个时候我们就在函数中添加一个空节点,让这个空节点的next指向head节点,这样每一次删除都不会是头节点的删除了。给出图解2. 代码实现2.1. Python代码# Definition for singly-linked list.# class ListNode(

2021-03-14 16:40:48 61

原创 leetcode题目:136.只出现一次的数字

1. 题目分析这道题我们用两种思想来做。基本思想1:排序,排序之后相同的数就在一起了。但是这种方式过程比较繁琐,需要考虑的情况有很多,之后会在代码中体现。基本思想2:用按位异或来做。任何数和 0 做异或运算,结果仍然是原来的数任何数和其自身做异或运算利用以上两条性质,到最后,只会剩下一个没有被重复的数字在这里我们用第一种思想做,第二种思想大多数人是想不到的。2. 代码实现2.1. Python代码class Solution(object): def s

2021-03-14 16:29:59 59

原创 leetcode题目:1.两数之和

1. 题目分析看到这种题,我脑子里又习惯性地冒出一个想法,那就是暴力枚举。但是,若我在这里用暴力枚举的话,就失去这篇文章的意义了,我给大家介绍一种更好的方法。基本思想:定义一个字典,字典的key记录数值,value记录这个数值在数组中的下标。起始的时候,这个字典是空的,我们遍历数组,没遍历一个数,我们就用目标值 - 当前值,判断这个值是否在字典中存在,若存在,则返回字典对应的value,以及当前值的下标给出图解(1)准备好我们所需要的的变量2. 代码实现2.1. Python

2021-03-14 16:18:15 46

原创 leetcode题目:121.买卖股票的最佳时间

1. 题目分析这道题,我们要用最简单,最节约内存的方式来做,我们可以用动态规划。基本思想:思考一下,当我们遍历到第n个元素的时候,现在的最高利润就只有两个情况,第一种就是n - 1的利润,第二种就是n - min(n - 1),谁更大,就用谁。、动态规划 前i天的最大收益 = max{前i-1天的最大收益,第i天的价格-前i-1天中的最小价格}设置两个变量,一个用来存储前n项的最小值,一个用来存储前n项的最高利润2. 代码实现2.1. Python代码class Solut

2021-03-12 22:51:17 69

原创 leetcode题目:219.存在重复元素

1.题目分析这道题不难理解,仔细想,换句话说就是给定一个数组,若数组中两个相等元素的距离小于k,返回true,若在数组中不存在这个数,则返回false这里肯定又有人要说话了,暴力解法直接得结果,但是这样显得太low了,我们可以换一种思想。基本思想:维护一个 大小为k的滑动窗口,那么什么是滑动窗口,下面给出图解。这就是个滑动窗口,因为超过距离超过k的两个数我们根本不需要考虑,所以在窗口之外的数就和窗口内的美誉什么关系,接下来我们只需要向右移动这个窗口就行了,这样能节约很大的空间。这个窗口

2021-03-12 22:43:00 51

原创 leetcode题目:101.对称二叉树

1. 题目分析这是一道很经典的二叉树的问题,首先我们分析一下这道题,这道题的题意应该是很明显的,那么我们要怎么来检查是否是对称二叉树呢?仔细分析一下,根节点其实对我们的求解没有太大的影响,我们只需要分析数的左右子树是否对称就行了。基本思想:我们可以用镜像对称的遍历方式来遍历这两个二叉树,说到这里,相信已经有了一些想法了。就拿这张图来说,去掉根节点,对于左子树,我们的遍历方式是,根,左,右对于右子树,我们的遍历方式是,根,右,左,我们来写详细一点左子树:根,左,右数据: 2,3,

2021-03-12 22:12:32 105

原创 leetcode题目:204.计数质数

1. 题目分析那么我们来分析一下这道题,这道题的题意很明显,我们可以使用暴力解法直接解开,但是若我为了这个暴力解法还发一次博文,那就显得我水平有点低了。有一个算法叫做埃氏筛,这个算法就是用来解决这类问题的,主要的思想就是,例如,2是一个质数,那么2 * 2,2 * 3…2 * n必定全是合数,我们可以把这些合数都做个标记,之后再计算这些标记就能得到质数的数量。继续思考,当22,23之后,若我们再遍历到3,那么23已经被标记了,所以我们直接从33开始,就这样,每次遍历都从i * i开始就行了。2

2021-03-12 11:55:49 68

原创 leetcode题目:880.索引处的解码字符串

1. 题目分析1.1. 错误理解大多数人看到这道题的第一反应就是把这个字符串整个还原,再遍历还原后的字符串,就能得到结果了。这是所谓的暴力解法,但是请看清楚,这道题是一道中等题,怎么可能那么简单。若使用暴力解法,提交肯定不会通过,原因是内存溢出,当还原后的字符串很长的时候,就容易造成内存溢出那可能这又有人说了,为了避免这个问题,我们可以多方位思考,因为本体只需要我们去第K个字母,那么我们需要多少就还原多少,没有必要把整个字符串都还原。这样想就太天真了,当K值很大的时候,我们依然需要很长的字符串

2021-03-11 22:46:47 172 2

原创 leetcode题目:682.棒球比赛

1. 题目解析这道题一看就知道是典型的栈的问题。基本思想:创建一个栈,遍历数组,遇到数字就入栈。遇到“C”就将栈顶元素删除。遇到“D”就访问栈顶元素,用栈顶的数字*2,把这个数字入栈。遇到“+”就访问栈顶两个元素,相加之后把这个数字入栈2. 代码实现2.1. Python代码class Solution(object): def calPoints(self, ops): """ :type ops: List[str] :rt

2021-03-11 22:12:22 83

原创 leetcode题目:232.用栈实现队列

1. 题目分析题目已经给的很明显了,用两个栈来实现队列的功能,我们知道,栈和队列的特性是相反的,栈是先进先出,队列是后进先出,我们可以从两个角度来解决问题,一个是出栈,一个是入栈2.1. 从入栈的角度分析仔细想想,栈是先进先出,那么我们只需要把先进的元素变成后进的元素,也就是说将先进的元素压到栈底,那是不是就可以实现先进后出的队列了?下面给出图解1.2. 从出栈的角度分析栈是先进先出,那么我们让原本应该先出的元素,最后出,那是不是也可以实现队列的性质呢?下面给出图解2. 代码实现2

2021-03-11 14:13:11 58

原创 leetcode题目:496. 下一个更大元素

1. 题目分析仔细理解题意,这道题我靠可以通过两个嵌套循环,再做比较来解决2. 代码实现2.1. Python代码class Solution(object): def nextGreaterElement(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: List[int] """ ta

2021-03-11 11:00:15 49

原创 leetcode题目:1598.文件操作日志搜索器

1. 题目分析题目大致我们是可以理解的,那么如何来解决这个问题呢?我们发现,这些退格前进的操作和栈的性质很相似,我们可以考虑用栈来解决这个问题。遍历logs,之后分为四个情况(1) 遍历到’…/‘且当前文件夹是主文件夹(2) 遍历到’…/‘且当前文件夹不是主文件夹(3) 遍历到’./'继续停留在当前文件夹中(4) 遍历到’x/'移动到x文件夹中可以用出栈入栈解决这个问题,进入文件夹就入栈,退格就出栈,若栈为空,当前文件夹是主文件夹知道这些,我们就能轻松实现这些代码了。2. 代码实现

2021-03-11 10:43:25 118

原创 leetcode题目:225.用队列实现栈

1. 题目解析其实题目的信息已经给的比较明显了,就是用两个队列实现栈,不能用栈的特性,只能用队列的特性。我们可以从两个方面来分析这个问题从出队角度从入队的角度接下来我们一一介绍这些两个分析问题的方式1.1. 从出队的角度分析思考一下队列和栈的特性:队列是先进先出,换句话说,是从队头出,队尾入栈是先进后出,从栈尾出,栈尾入接下来问题就变得简单了,我们只需要让队列出队的方式与之前相反就行了,我们能通过两个队列达到这个目的,下面给出图解准备两个队列,queue1,queue

2021-03-10 21:32:32 96

原创 leecode题目:1441.用栈操作构建数组

1. 题目分析相信很多人和我一样,拿到这道题完全不知道是什么意思,那我们来仔细分析一下,我尽量用通俗的语言给大家讲清楚。输入:target(数组)和n(整数)从1到n之间抽出元素组合成和target一模一样的数组并且这里的target元素时严格递增的组合方式:例如输入target = {1,3},n = 3,这其实就是用{1,2,3}这个数组组合成target继续上面的问题,target中有1,所以第一个是Push,将1加入。target中没有2,所以之后是Push,Pop,将2加入再弹出

2021-03-10 20:07:48 100

原创 leetcode题目:844.比较含退格的字符串

1. 题目分析我们来分析一下,题目优点让人不太明白,但是说白了,就是‘#’相当于退格,删除‘#’的前面一个,就是字符串真实的样子,在这里我们很容易联想到栈的先进后出的例子。下面给出一组图解:2. 代码实现2.1. python代码class Solution(object): def backspaceCompare(self, S, T): """ :type S: str :type T: str :rtype:

2021-03-10 18:30:42 149

原创 leetcode题目:155.最小栈

1. 题目分析乍一看好像很简单,不就是定义一个栈嘛,但是注意题目的第一句话,在常数时间内检索道最小元素,也就是说,我们不能等道执行getMin()的时候再来遍历栈中的元素得到最小值,那样就太浪费时间了。那么我们应该怎么办呢?下面给出解决方案条件:不能在getMin()中求最小值栈随时都能得到最小值,而且是在时间很短的情况下。思考:在最短的时间得到最小值,那么最短的时间花费是什么呢?仔细一想,我们就明白了,我们需要在每个操作中时时刻刻记录最小值,道需要的时候拿出来用就行了解决:

2021-03-10 14:44:38 66

原创 leetcode题目:1047.删除字符串中所有相邻重复项

这道题可以说是没有什么难度的,大佬可以略过了。那么我们来分析一下,输入’abbaca’的时候一、分析问题abbacaaaca 删掉bb后的结果ca 继续删掉aa后的结果ca就是我们想要的结果,这个问题让我们很容易就想到了栈的特性,这里我用图解说明一下。2. 给出代码解决方案2.1. Python代码解决class Solution(object): def removeDuplicates(self, S): """ :typ.

2021-03-10 13:45:29 119

原创 机器学习(二):特征工程

目前,sklearn在应用中,主要有四类算法:聚类,分类,回归,降维聚类:即非监督学习的方式,例如我有一堆人,这堆数据是没有男孩或者女孩这些标签的,此时我需要给这堆数据进行聚类,根据一些身体特征,分成两类,并标记为男孩,女孩。分类/回归:监督学习的方式,还是那堆人,但是已经分好类了,男孩,女孩,此时来了一个新人,我根据这个新人的特征,给他归类。降维:如果按照字面意思来理解,那就有问题,当数据集有很多属性的时候,我们此时需要把100个属性变成10个,并不是挑出10个,而是压缩成10个,这10个属性,就集

2021-03-09 15:22:12 2856 1

原创 机器学习(一):机器学习概述

相信很多小伙伴在接触机器学习之前,都有不少的疑问,就是什么是机器学习?机器学习和人工智能有什么关系?机器学习能做什么?这些问题我在这篇文章给大家一一解答。1. 什么是机器学习?机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测。1.1. 图解机器学习是指,把人的思考逻辑应用在计算机上,从而让计算机有比人更准确的判断。我们人从大量的日常经验中归纳规律,当面临新的问题的时候,就可以利用以往总结的规律去分析现实状况,采取最佳策略。判断猫和狗这个功能如何实现呢?我们可以把很多猫

2021-03-03 19:36:59 305 2

原创 python数据分析之Mathplotlib

什么是Matplotlib?Matplotlib 是一个 Python 的 2D绘图库,通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。接下来,给几个绘图很常用很重要的函数,接着我们再来做实例1. 绘制线形图1.1.简单的线形图import numpy as npfrom matplotlib import pyplot as plt# 生成[0, 2π]之间的等间距的100个点x = np.linspace(0,2 *

2021-03-02 19:11:09 1413

原创 python数据分析之pandas

1.介绍什么是pandas?Pandas(Python Data Analysis Library )是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。为什么要使用pandasPandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具。pandas是基于Numpy构建的,让以Numpy为中心的应用变得更简单。Python、N

2021-02-28 19:35:54 299 2

原创 k8s单机版部署

1.开发环境CentOS7.92. 开始安装2.1.关闭防火墙切换到root用户执行以下命令1.关闭centos自带的防火墙# systemctl disable firewalld# systemctl stop firewalld 2.安装etcd和kubernetes软件(会自动安装docker)# yum install -y etcd kubernetes2.2修改两处配置Docker配置文件/etc/sysconfig/docker, OPTIONS=’–se

2021-02-24 16:31:09 3102

原创 python数据分析之numpy

numpy是什么?NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。为什么要使用numpy?NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。print(list

2021-02-21 23:17:08 499

原创 python的内存管理以及垃圾回收机制

引用计数器为主,标记清除和分代回收为辅 + 缓存机制一、引用计数器二、标记清除三、分代回收

2021-02-18 20:53:15 100

原创 python之元类

一、globals查看所有全局变量二、元类三、自定义元类

2021-02-17 08:59:06 161 4

原创 python网络编程UDP

一、ip和端口我们通过一个简单的图来了解在这个图里,左边的用户要发给右边的用户,信息为‘你好啊’,在发送的时候,其实并不是只封装了信息,还封装了目的ip,目标端口,源ip,源端口,信息发送到网络里,通过目标ip识别到底要给哪台电脑,之后再通过端口识别给目标电脑的哪个进程。程序要收发网络数据,就必须要有端口。端口分为两种,一种是知名端口,一种是动态端口,知名端口默认是0~102380端口分配给了http服务21端口分配给了ftp服务动态端口是从1024~65535端口号是用来标记一

2021-01-19 14:43:10 203

原创 python并发编程(3)新协程asyncio

一、偏函数当我们向减少函数的参数时,我们可以用functools.partial(函数名,参数)来实现import functoolsdef func(a,b,c): return a + b + cnew_func = functools.partial(func,1)result = new_func(2,3)print(result)# 输出结果# 6问题:设置一个基点(3,4),求点(1,2),(3,4),(5,6),(7,8)离基点的距离顺序的排序import

2021-01-18 14:45:41 155

原创 python并发编程(3)协程

由于GIL的存在,导致Python多线程性能甚至比单线程更糟。协程: 协程,又称微线程,纤程,英文名Coroutine。协程的作用,是在执行函数A时,可以随时中断,去执行函数B,然后中断继续执行函数A(可以自由切换)。但这一过程并不是函数调用(没有调用语句),这一整个过程看似像多线程,然而协程只有一个线程执行.协程由于由程序主动控制切换,没有线程切换的开销,所以执行效率极高。对于IO密集型任务非常适用,如果是cpu密集型,推荐多进程+协程的方式。写一个·简单的协程def run1():

2021-01-18 12:05:20 133

原创 python并发编程(2)多进程

进程:以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存的管理,网络接口的调用等,对各种资源管理的集合,就可以称为进程,进程要操作cpu,必须先创建一个线程,所有在同一个进程里的线程是共享同一块内存空间的进程的状态就绪态:运行的条件都已经满足,正在等在cpu执行执行态:cpu正在执行其功能等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待态进程的创建python的multiprocessing模块是跨平台版本的多进程模块,在multiprocessin.

2021-01-15 20:42:34 96

原创 python并发编程(1)多线程

一、线程的创建原理:线程抢夺cpu时间片,谁抢到了谁就执行,在python中,当一个线程运行100个字节后,会自动释放时间片。重新抢夺。启动多个线程(函数方式)在Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建多线程。 一般接收两个参数线程函数名:要放置线程让其后台执行的函数,由我们自已定义,注意不要加();线程函数的参数:线程函数名所需的参数,以元组的形式传入。若不需要参数,可以不指定。import threading

2021-01-15 18:00:44 199

原创 python多继承和混入类:通俗易懂

一、单继承,二、多继承,三、混入类

2021-01-14 17:24:12 419

原创 python之魔法方法

一、属性访问控制,二、描述符,三、构造自定义容器,四、上下文管理器,五、比较运算符,六、str和repr方法,七、call方法

2021-01-14 12:22:42 91

原创 python的私有化问题

首先明确一点,在python中,并没有绝对的私有化。在Python中,没有绝对在外部访问不了的变量,但Python代码应遵循一个规范:以单个下划线开头的变量或方法应被视为非公开的API,因此不用特别声明,外部的调用者也不应该去访问以单下划线开头的变量或方法,因为类的设计者也遵循着这个规范,他会默认外部的调用者不会访问这种变量(但是如果硬要调用也是可以的)。另外,Python通过一个非常简单的机制完成了一个伪私有化功能,这个机制名叫名称转写(name mangling):以双下划线开头,并以最..

2021-01-13 16:02:41 228

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关注的人

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