![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
山野雾灯ccc
路漫漫其修远兮,吾将上下而求索。
展开
-
二叉树的序列化与反序列化
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。原创 2022-09-08 18:09:48 · 269 阅读 · 0 评论 -
二叉树的先序遍历(递归与非递归)
二叉树的先序遍历(递归与非递归)原创 2022-09-08 13:32:21 · 207 阅读 · 0 评论 -
有效的字母异位词,给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。原创 2022-09-05 13:00:34 · 717 阅读 · 0 评论 -
递归与分治策略(一)-----基本概念及例题解释(阶乘和,递归方法正序、逆序输出数组元素,找寻数组中value元素的位置)
分治策略分治策略是将规模比较大的问题可分割成规模较小的相同问题,问题不变,规模变小。这将导致递归过程的产生。分治与递归经常同时应用在算法设计之中,并由此产生许多高效算法。递归:若一个函数直接地或间接地调用自己,则称这个函数是递归的函数。分治策略的基本特征分治法所能解决的问题一般具有以下四个特征:●该问题的规模缩小到一定的程度就可以容易地解决。●该问题可以分解为若干个规模较小的相同问题。●使用小规模的解,可以合并成,该问题原规模的解。●该问题所分解出的各个子规模是相互独立的。分治策略的基本步原创 2022-02-28 22:29:28 · 136 阅读 · 0 评论 -
矩阵行列互换
矩阵行列互换问题描述代码测试结果问题描述矩阵行列互换写一个函数,使给定的一个二维数组(3×3)转置,即行列互换示例1 : 输入:1 2 34 5 67 8 9输出:1 4 72 5 83 6 9代码#include<iostream>#include<vector>#include<iomanip>using namespace std;//题号7:矩阵行列互换//写一个函数,使给定的一个二维数组(3×3)转置,即行列互换//示原创 2021-01-05 17:31:45 · 5322 阅读 · 0 评论 -
求一个3×3矩阵对角线元素之和
求一个3×3矩阵对角线元素之和int main(){ vector<vector<int>> vec;//相当于二维数组 int row, col; int Maindiagonal = 0;//主对角线之和 int Subdiagonal = 0;//副对角线之和 cout << "请输入行、列的值(行列值相等):"; cin >> row >> col; vec.resize(row); for (int i = 0;原创 2021-01-04 18:00:10 · 2007 阅读 · 0 评论 -
猴子吃桃问题
猴子吃桃问题问题描述代码测试结果问题描述猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子代码#include<iostream>#include<vector>using namespace std;vector<int> peach;void CalSum(int day)原创 2021-01-04 17:09:29 · 91 阅读 · 0 评论 -
求Sn=a+aa+aaa+…+aa…aaa(有n个a)
求Sn=a+aa+aaa+…+aa…aaa(有n个a)题目分析过程分析代码测试结果题目分析求Sn = a + aa + aaa + … + aa…aaa(有n个a)之值,其中a是一个数字, 为2例如:2 + 22 + 222 + 2222 + 22222(n = 5),a,n由键盘输入输出:24690过程分析利用vector向量存放2、22、222、2222、22222的值每次往vector向量中存放一个值,就计算sum(初始化为0)代码#include<iostream&原创 2021-01-02 19:17:32 · 1551 阅读 · 1 评论 -
C++中的友元
C++中的友元友元的概念引入友元的分类类的非成员函数友元类的成员函数友元类友元友元的特点友元说明友元的概念引入C++的最重要的特点之一就是封装性和继承性。对于类的封装性来说,就是类的私有成员和保护成员只能在设计类时它所定义的函数内使用,即私有成员和保护成员只能通过该类的成员函数来访问。当我们需要在类的外部访问该类的私有成员和保护成员时,就可以利用友元(**friend**)来实现这一操作。友元的分类类的非成员函数友元类的非成员函数友元: 表示友元函数不是当前类的成员函数,而是独立于当前类原创 2020-12-27 18:23:04 · 204 阅读 · 0 评论 -
C++实现银行家算法
1.需求分析银行家算法是最具代表性的避免死锁的算法,由Dijkstra提出。该算法原本是为银行系统设计的,以确保银行在发放现金贷款时,不会发生不能满足所有客户需要的情况。在OS中也可以用他来实现避免死锁。为实现此算法,每一个新进程在进入系统时,必须声明在运行过程中可能需要每种资源类型的最大单元数目,其数目不应该超过系统所拥有的资源总量。当进程请求某资源时,系统必须首先确定是否有足够的资源分配给该进程。如果有再进一步计算在将这些资源分配给进程后,是否会使系统处于不安全状态。如果不会,才会将资源分配给他原创 2020-12-17 19:20:54 · 2263 阅读 · 5 评论 -
C++实现基于顺序搜索的动态分区分配算法
1.需求分析动态分区分配又称为可变分区分配,他是根据进程的实际需要,动态地为之分配内存空间。在实现动态分区分配时,将涉及到分区分配中所有的数据结构、分区算法和分区的分配与回收操作这三方面的问题。 在本实验中运用了四种分配算法,分别是首次适应算法,循环首次适应算法,最坏适应算法,最佳适应算法。首次适应算法FF算法要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查找,直到找到一个大小能满足要求的空闲分区为止。然后再按照作业的大小,从该分区划分出一块内存空间,分配给请求者,余下的空闲分区原创 2020-12-13 18:58:13 · 5046 阅读 · 1 评论 -
C++实现--先来先服务,短作业优先,高响应比优先,时间片轮转法调度算法
1.需求分析1.1概念说明1.周转时间:是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(称为作业周转时间)。他包括四部分时间:作业在外存后备队列上等待(作业)调度的时间,进程在就绪队列上等待进程调度的时间,进程在CPU上执行的时间,以及进程等待I/O操作完成的这段时间。简单来说,周转时间=完成时间-提交时间。2.带权周转时间:作业的周转时间T与系统为他提供服务的时间Ts之比,即W=T/Ts。1.2先来先服务(FCFS)FCFS(first-come first-served)是原创 2020-12-11 21:39:54 · 8354 阅读 · 2 评论 -
给定两个单链表,编写程序找出两个链表的公共结点。
题目描述给定两个单链表,编写程序找出两个链表的公共结点。!!!图中没有画出Head2的头结点,大家注意一下在这里,大家需要注意的是两个链表的公共结点不是指数据域相同的结点,而是指地址相同的结点。问题分析通过上图,我们可以得到如果两个链表有公共结点,那么从公共结点开始,两个链表后面的结节都是相同的(红色框);从这一点出发,我们可以先得到两个链表的长度(length1和length2),让长的链表先走两个链表长度相减的那一段结点(蓝色框),然后我们可以认为两个链表的长度是相等的(绿.原创 2020-11-19 17:54:44 · 2264 阅读 · 1 评论 -
递归实现整数划分问题
整数划分问题:将正整数n表示成一系列正整数之和,n=n1+n2+n3+...+nk,其中n1>=n2>=...>=nk>=1,(k>=1)正整数n的这种表示称为正整数n的划分。正整数n的不同划分个数称为正整数n的划分,记作p(n)例如,正整数6有如下11种不同的划分,所以p(6)=11;6;5+1;4+2,4+1+1;3+3,3+2+1,3+1+1+1;2+2+2,2+2+1+1,2+1+1+1+1;1+1+1+1+1+1;在正整数n的所有不同的划分中,将原创 2020-06-22 10:39:43 · 393 阅读 · 0 评论