自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

原创 IEEE 802.11a OFDM系统的仿真(续)

(因为信道和信号的所有元素要求一一对应,通过信道前面加0实现了信道的延时,为了实现一一对应也需要在信号前面加相同数量的0)接下来对第二个信道进行延时处理,延时就是在信道前面加0,加0会导致信道的长度变长,将超过指定长度的多余部分直接删掉。即为信号*2径中的第一个信道+信号*2径中的第二个信道+噪声(这里噪声加的是两个信道的总体噪声)又因为信道的能量是信道振幅的平方,设两径信道第一个信道振幅为a,第二个振幅为b。两径信道中第二个信道的能量比第一个信道的能量低3dB(也就是能量减半)(1)生成2径衰落信道。

2024-09-12 21:01:30 564

原创 IEEE 802.11a OFDM系统的仿真

简化的IEEE 802.11a系统的仿真

2024-09-10 21:47:06 796

原创 matlab仿真 OFDM系统仿真

注意图9-8的解释,载波之间的周期只差不再是正数,也就是载波之间的正交性遭到了破坏,所以载波的解调会受到其它载波的影响,这里第二个符号产生的影响简化为1:15位置的数据损失,这里比较调制和解调的数据都是QAM调制之后的数据,代码并没有对QAM进行解调,而且在比较数据的时候比较的是QAM数据的幅值(abs)已知Y=HX,其中X为输入信号,Y为输出信号,H为信号,那么在Y的基础上左乘X的逆矩阵,就可以实现Y=X。如题目,第一个信道的时延为0,所以经过信道的过程为x*h(1);信道均衡是为了消除信道的影响。

2024-09-08 21:59:06 653

原创 桌面出现新的动态壁纸,桌面图标消失,点击桌面没有反应,桌面右键没有反应

如果是以上四种动态壁纸的话,是QQ音乐的动态壁纸覆盖了屏幕,关闭qq音乐中的动态桌面即可。

2024-08-28 10:53:11 273

原创 matlab仿真 信道编码和交织(下)

(1)这里double中使用msg1.x而不是直接使用msg1,是因为只有在后面加上.x才能正常进行二进制的转化,最后一行的double也是相同的道理。循环码的产生分为两步,首先通过 cyclpoly函数形成循环码的生成多项式,再利用cyclgen函数,将生成多项式作为参数,生成循环码。(1)这里的纠错能力是t,也就是说当码字变化范围在t以内的时候,可以正常纠错,所以后面随机数采用的范围为1:t。总结,交织器通过改变可能出错的码中各个数据的位置,从而将可能连续出现的错误分开,从而减小错误对判决的影响。

2024-08-27 20:59:33 449

原创 matlab仿真 信道编码和交织(上)

总结:译码的结果并不是原始数据,而是表示错误情况的向量(矩阵)(y2),如果矩阵(y2)全为0 ,证明没有错误,如果不全为0,证明有错误,我们通过逐行比较译码结果(y2)和所有的错误情况(errvec),观察每一行的译码结果与哪一行的errvec相同,以偶校验的1,3,4位为例,这三位的数据分别为0 0 1,为了确保加上校验位后有偶数个1,所以校验位为1,后面的1 2 3位,2 3 4位同理。y是编码后的结果,我们一行一行看,绿色区域是每一组的校验位,红色区域是每一组的信息位(红色就是x)

2024-07-31 10:45:07 942

原创 matlab仿真 数字信号载波传输(下)

(1)这里的图像只画出了前4个符号的图像,我们在设定msg信号的时候就已经确定了前4个符号为0 1 3 2,之后经过fsk调制之后,每个符号采样了60个点,所以4个符号的总长度是240(FSK调制之后用60个点表示一个符号),在使用plot进行函数的绘制时,范围是从1->4*fs=240。此书中的瑞利信道的产生函数rayleighchan已经在新版本中无法使用了,所以采用新的函数comm.RayleighChannel产生瑞利信号,这个函数的使用方法可以参见。确认目前采用的doppler的位置,

2024-07-26 16:42:33 815

原创 matlab仿真 数字信号载波传输(上)

首先,一个符号传递的时间为T=1秒,所以一共有8个符号(PSKMOD处理后信号的长度不变,仍然是8个),所以整个信号传输共8秒,这里的抽样时间间隔为0.01,所以理论上一共有800个点,实际上t为101,就是因为算上了0这个点,在x的向量中也算上了0这个点,所以长为801,但是在进行载波调制的时候使用的是用t构造出来的c(长度也为101)和msg_psk(长度为8)相乘,结果出现了808的长度,(4)这里是用信噪比和信号功率求出噪声幅度,首先在求功率的时候使用了幅度的平方,所以最外面需要加上根号。

2024-07-25 19:47:40 813

原创 matlab仿真 数字基带传输(下)

(1)因为调制信号在发送端和接收段均使用根升余弦滤波器进行滤波,所以一共要使用根升余弦滤波器进行两次相关,总体思路如下。/SIMULINK 通信系统建模与仿真 刘学勇编著第六章内容,有兴趣的读者请阅读原书)在此可以简述为:在此次滤波过程中分母系数为1,分子系数为num。(2)理论的误符号率是通过式6-25推出来的。(1)关于函数impz的使用,详见。

2024-07-24 22:12:35 211

原创 matlab仿真 数字基带传输(上)

由图6-2,可知,得到信号r(t)后让r(t)对s0和s1做互相关,若一个位置s0的互相关结果比s1的互相关结果大,那么这个位置可以被判决为s0,反之可以判决为s1。例6.4和6.1的区别是,因为s0和s1是双极性信号,所以判决时只需要求一个互相关的情况,然后与0比较即可得出结果。因为阈值是信号能量Eb/2,所以s(t)的能量=10*1的平方=10;这里的s0设置成了0 0 0 0 0 0 0 0 0 0(即只有n(t))s1为1 1 1 1 1 1 1 1 1 1(s(t)和n(t))

2024-07-24 10:21:52 515

原创 matlab仿真 模拟调制(下)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容,有兴趣的读者请阅读原书)求调频指数的公式为:kf*Amax/fm,其中的Amax是振幅的最大值,这里可以理解为消息序列的最大绝对值。(1):在求FM信号相位的过程中。

2024-07-23 17:01:00 314

原创 matlab仿真 模拟调制(上)

这里我们每隔0.1秒产生一个符号,时间长度为10s,所以一共产生100个符号,又因为采样时间为0.0025,所以我们每个符号都采样40次(0.1/0.0025),采样40次的效果就是每个序号在采样之后都出现了40次重复的情况(这里用ones实现了该效果)首先是生成消息序列时的操作,我们生成的是模拟信号,所以要进行采样转化为数字信号。在构建低通滤波器时,思路如下(pi处是高频,2pi处是低频)这次的代码是用滤波法实现单边带信号的,滤波的思路如下图。和AM的思路一样,都是先生成消息序列,后构建数字信号。

2024-07-10 21:49:10 343

原创 matlab仿真 信道(下)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第四章内容,有兴趣的读者请阅读原书)积分清除模块只完成了对数据的累加,没有归一化,需要用增益模块对累加的数据进行归一化。这里我们已经完成了模型文件的建立,将文件命名为ex7.mdl进行保存。注意:这里输入大写的SNR会报错,无视报错点击OK。系统框图如图所示,TX和RX 模块需要单独实现。与Tx相同,将Rx的两个输出端口名称分别改为。之前的内容还剩下simulink的仿真过程。完成对一个符号的抽样数据并进行累加。

2024-07-09 11:07:35 508

原创 matlab仿真 信道(上)

因为我们每个脉冲设置8个抽样点,这里发送时间只有一秒,所以就是在1秒钟发送10000个符号,每个符号采样8次,所以每次差1/80000秒,也就是信号的抽样时间间隔(这里个人理解书上的题目可能是多写了一个0,那里的多普勒频移也是多写了一个0).这里和4.6不同的地方在于,我们在采用瑞利噪声时需要设置时间变量,这里题目已经写明信号的抽样时间间隔为1/80000s,这里的代码是书上直接给出的,本人还不能理解,这里直接将其作为产生瑞利衰落的已知函数进行使用(,两者函数底层代码的实现方式不同,所以使用的方式也不同。

2024-07-08 21:33:12 381

原创 matlab仿真 通信信号和系统分析(下)

(内容源自详解MATLAB/SIMULINK 通信系统建模与仿真 刘学勇编著第三章内容,有兴趣的读者请阅读原书)虽然DFT内部采用的是循环卷积,但是我们可以利用DFT实现线性卷积结果的求解。这里用两种方得到的结果相同证明DFT运算内部是采用循环卷积而不是线性卷积。可以看到解析信号只包含正频率部分,且幅度值是原始信号频谱幅度值的两倍。总结来说,就是利用解析信号和频移公式实现了带通信号的低通表示。

2024-07-02 11:50:33 415

原创 matlab仿真 通信信号和系统分析(上)

这里有一个有意思的点,就是第9行的n1是从0开始的,但是在例3.10中的第4行h(n+1)中n+1是从1开始的,这是因为h(n+1)中是明确把n+1当做h的索引值了,只有正整数才能作为数组的索引值,而本例中只有利用n进行乘法运算,没有当做索引值,所以可以从0开始。这题中我们是使用手动积分算出傅里叶级数的表达式后直接对表达式进行画图的,个人理解是因为无穷长的信号在matlab中表示较为复杂,所以反而是手动求解更快。此题中是周期信号,不可积分,所以无法使用傅里叶变换,所以采用傅里叶级数进行求解。

2024-06-30 17:05:15 342

原创 matlab中simulink仿真软件的基础操作

双击正弦信号发生器,进行信号参数的设置,(其中amplitude为幅度,frequency为频率,phase为相位)我们将第一个发生器设置为振幅为2,频率相位采用默认值,同样的方法设置第二个频率设置为2,相位设置为pi/2,设置完成后点击apply即。我们组装一个相加器,需要两个输入、相加器和一个输出,此时subsystem有了一个输入和一个输出,现在我们可以选中输入(1),ctrl+c,ctrl+v复制出一个新的输入。先点击工具栏中的run,运行程序,之后双击示波器,观察元器件的输出结果。

2024-06-29 21:55:57 732

原创 代码随想录算法训练营第六十天|84.柱状图中最大的矩形

因为heights[i] == heights[st.top()],也就是说,如果最后的结果中用到了heights[i],那就必然也会用到 heights[st.top()],而i相对于st.top()有着更远的距离,肯定是i得到的结果更大,所以加上st.pop()就是直接考虑i的情况,而不加就是st.top()和i都考虑。st.pop()加不加对结果没有影响,加上的话在情况三的计算中可以减少运算。这题和之前的单调栈的题思路正好相反,当遇见小于栈顶元素的情况单独处理。

2024-06-04 17:25:19 116

原创 代码随想录算法训练营第五十八天|503.下一个更大元素II,42. 接雨水

我们在计算雨水时需要长乘上高,长的计算是需要序号相减的,在图中情况下,我们需要拿第二个5的序号值去更新第一个5的序号值,从而确保得到的雨水长是正确的。首先确定雨水一定是凹型才能接住,所以单调栈的设定为与更大元素的设定一样,碰见小于栈顶的元素直接入栈。首先,能接多少雨水是由两边更高的数字中比较矮的数字(2、3中的2)决定的,利用i%nums.size()可以实现循环两次。雨水的高还需要在这基础上减去底座(1)的高度。

2024-06-04 16:29:08 184

原创 代码随想录算法训练营第五十七天|739. 每日温度,496.下一个更大元素 I

nums2元素序号-------(单调栈得到结果——nums2的result数组)-------->nums2元素-------(利用nums2元素和nums1元素部分相同——nums1的result数组)-------->所以我们需要建立一个nums1元素和nums1元素序号一一对应的map数组,map的key值是nums1元素,这样就可以通过元素得到。nums1元素序号,nums1元素,nums2元素,nums2元素序号,单调栈。思路和上题一样,主要是要建立nums1 和 nums2 元素的对应关系,

2024-06-04 15:42:38 221

原创 代码随想录算法训练营第五十六天|647. 回文子串,516.最长回文子序列

其实也不一定,eg:aaab,可以发现,0位置的a和3位置的b不相等,但是dp[0][3]要想得到正确的结果,必须继承dp[0][2](aaa)的子序列长度情况,如果直接放弃0位置和3位置,只继承dp[1][2](aa),就会造成数据的缺失。所以dp[i][j] = max(dp[i + 1][j], dp[i][j - 1])至于初始值的设定,需要考虑之前没有考虑的i==j的情况,设定dp[i][i]=1。=s[j]时,很容易推出dp[i][j]=false;当s[i]=s[j]中,需要考虑三种情况。

2024-06-03 11:40:58 265

原创 代码随想录算法训练营第五十五天|583. 两个字符串的删除操作,72. 编辑距离

只要求出两个字符串的最长公共子序列长度即可,最后用两个字符串的总长度减去两个最长公共子序列的长度就是删除的最少步数。dp[i][j]=dp[i-1][j-1]dp[0][i]表示word1长度为0,word2长度为i,两者相同需要word2删除i次。添加(等于另一侧删除)dp[i][j]=dp[i][j-1]+1;改变(没有删除)dp[i][j]=dp[i-1][j-1]+1;删除:dp[i][j]=dp[i-1][j]+1;同理,dp[i][0]=i。所以dp[0][i]=i。这里选择最小的情况就型。

2024-06-02 21:30:13 230

原创 代码随想录算法训练营第五十三天|392.判断子序列,115.不同的子序列

t[j - 1],此时相当于t要删除元素,t如果把当前元素t[j - 1]删除,那么dp[i][j] 的数值就是 看s[i - 1]与 t[j - 2]的比较结果了,即:dp[i][j] = dp[i][j - 1];每一次出现有字母相同的情况,不仅要继承之前的已经有的子序列的个数(dp[i-1][j]),还有新产生的子序列个数(dp[i-1][j-1]),这里dp[i-1][j-1]和dp[i][j]数量是完全相同的,只是子序列更长了。当s[i-1]和t[i-1]相同时,子序列长度加一。

2024-06-02 20:56:00 247

原创 代码随想录算法训练营第三十六天|738.单调递增的数字

位置的初始值一定要是nums.size(),这是为了确保当数字已经是单调递增时,不会有位置变成9。但是从前往后,第一个3和第二个3相等,等到递归到2的时候已经没有机会再去更改3了。关键还是循环顺序,是从后往前循环,因为有时候需要动最高位的数字。第二个技巧是记录需要变9的位置,此位置以后所有的数字都要变成9。这题的一般思路是——非单调位置-1,后面所有数字都变成9.以332为例,从后往前是332->329->299,738.单调递增的数字。

2024-05-30 17:50:58 148

原创 代码随想录算法训练营第五十二天|300.最长递增子序列,1035.不相交的线,53. 最大子序和

思路就是,如果dp[i-1]+nums[i]比nums[i]小,也就证明,dp[i-1](i前面几项的和)已经对子序和是一种"拖累",我们需要将它们全部舍弃,重新开始。首先来看递推公式,一个方向是dp[i]=dp[i-1]+nums[i],但是,并不是任何nums[i]都需要加上的,dp[i]会一直增加吗,显然不会,当i和i之后的数据全都小于0时,dp[i]会下降。所以返回的一定不能是dp[nums.size()],而是在这个过程中的最大值。可以注意到dp[1][1]得到的信息并没有传输给dp[3][2]

2024-05-30 17:35:53 131

原创 代码随想录算法训练营第五十一天|300.最长递增子序列,674. 最长连续递增序列,718. 最长重复子数组

dp[i]的推导需要用到i之前的dp数组的值,当nums[i] > nums[j]时,也就是说i可以在以j为末尾的最长子序列上再延长1.dp[i][j]表示以i-1为结尾的A,和以j-1为结尾的B,最长重复子数组的长度为dp[i][j]这题相对于上题题目添加了限制条件,连续要求dp[i]只能通过dp[i-1]推导出来。这样做的好处是方便初始化,可以将dp[0][j],dp[i][0]直接初始化为0。dp数组的含义为dp[i]表示字符串以第i位置为末尾的最长递增子序列的长度。

2024-05-27 20:43:04 199

原创 代码随想录算法训练营第三十五天|435. 无重叠区间、763.划分字母区间

这里的方法是十分巧妙的,由于i是从小到大依次循环,指定字母的值小的会被大的值给覆盖,最后仅用一次循环就实现了最后位置的寻找。这题的思路就是找到每个区间中的字母最后出现的位置,关键是位置怎么找。先对区间进行排序,优先去除交集区间。

2024-05-27 19:45:13 296

原创 代码随想录算法训练营第五十天|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

这里有个问题需要处理一下,如果是昨天卖出股票(处于卖出的状态)那么今天一定是处于冷冻期(dp[i][3]),今天是无法进入买入股票的状态的,也就是dp[i][0]不能根据dp[i-1][2]推导出来。dp[1][0]可由dp[0][3]推导,在第一天冷冻第二天买入股票的情况下,要想推导正确,只能将dp[0][3]设置为0,dp[0][2]同理。dp[i][0]由dp[i-1][0]、dp[i-1][2]、dp[i-1][3]推导。dp[i][2]由dp[i-1][2],dp[i-1][0]

2024-05-26 16:00:19 227

原创 代码随想录算法训练营第三十四天|860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球

先考虑身高维度,将身高从大至小进行排列,[5,2]表明在该同学的前面有两个比他更高的人,与从大到小的排列顺序相互对应,之后在根据people[i][1]提供位置数据,将数组中的元素插入到对应的位置上面。遇到账单20,优先消耗美元10,完成本次找零。因为5的用处更大,等到循环结束的时候,如果存在某个美元不够用的情况,那么就是无法找零。优先用箭去射击区间的交集,先。

2024-05-26 15:35:12 257

原创 代码随想录算法训练营第三十三天|1005.K次取反后最大化的数组和,134. 加油站

如果到第i个站台净收益小于0了,那么这个站台(和与这个站台同时纳入sum计算的之前的站台)都不能作为起点,只能从第i+1个站台进行考虑。这里首先每一个站台都是有净收益的,净收益等于该站台所提供的油量-到该站台所消耗的油量。先把所有负数都取反成正数,之后把所有次数都用来对绝对值最小的数字进行取反。1.正向遍历,当第i+1大于i时,i+1处的糖果数量比i多1;2.反向遍历,当第i大于第i+1时,i处的糖果比i+1多1;我们遍历每个站台的净收益,用sum记录遍历的站台净收益之和。优先把绝对值较大的负数取反。

2024-05-24 16:23:41 258

原创 代码随想录算法训练营第四十八、四十九天|121. 买卖股票的最佳时机1-4

dp[2][3]和dp[2][1]的本质其实是一样的,dp[2][3]表示在第2天买入、卖出、再买入,与dp[2][1]的买入是相同的(同一天一次买入和一次卖出相互抵消)考虑递推公式时,dp[i][j]的推导需要前一天的数据(dp[i-1][j]),其中。dp[0][0]很容易想到是0,i=0表示是第0天(的股票价格),j=0表示还没有进行操作,收益自然是0。如果第i天做了操作,那么就是在前一天的基础上(dp[i-1][j-1])再进行一次操作。所以dp[0][1]=-price[0]

2024-05-24 16:09:31 132

原创 代码随想录算法训练营第四十七天|198.打家劫舍

(cur->left得到的{val2, val1}在返回上一级后,会被cur->left所继承,参与到cur这层的选择中)2.不取当前节点,则值为:左节点(取或不取的最大值)+右节点(取或不取的最大值)这里的dp数组大小为2,dp[0]表示不用当前节点,dp[1]表示使用当前节点。遍历的返回值均为数组,因为后序遍历二叉树可以将子节点的情况继承给父节点。1.取当前节点,则值为:当前节点的值+不取左节点的值+不取右节点的值。一定是后序遍历(根据子节点的dp大小选择是否将父节点加入)选择两种情况下的最大值。

2024-05-23 21:13:39 259

原创 代码随想录算法训练营第四十五天|139.单词拆分

这里我们要注意,我们并不是把“物品”放进“背包”,而是检查物品(数组中的元素)能不能组成背包 (s字符串),我们采取j-作为下标i来截取一段s中的字符串,如果这段字符串能够在数组中找到,同时dp[j]为true,那么证明dp[i]为true。关键就是数组中元素的遍历,我们需要得到的是dp[s.size()]是否为true,所以dp数组需要是一个bool类型的数组,元素遍历我们采取int类型的变量j进行循环。这题首先肯定是排序问题而不是组合问题,因为单词的顺序是一定的,所以组成单词的字符串顺序也是一定的。

2024-05-23 20:32:51 283

原创 代码随想录算法训练营第四十四天|70. 爬楼梯(进阶版)

INT_MAX这个条件是确保在利用dp[j - coins[i]]得到dp[j]的过程中,所使用的一定是更新过的dp[j - coins[i]],防止dp[j - coins[i]]为未更新过的初始值,影响dp[j]的正常推导。因为无论排列和组合,求出的最小商品数都是相同的,所以可以先循环容量,再循环商品,反过来也行。多重背包问题,代取商品就是从1:m的数组,背包的容量就是n,由于是求方法数,所以递推公式为。此题是求最小的情况,也就是把背包装满所用的最小的商品数,

2024-05-22 18:20:08 266

原创 代码随想录算法训练营第四十三天|

也是完全背包问题,但是需要求排列而不是组合,所以需要先遍历背包容量,再遍历物品。典型的完全背包问题,但这里是求有多少种组合方式,所以递推公式变为。

2024-05-22 16:05:27 231

原创 代码随想录算法训练营第四十二天|1049.最后一块石头的重量II,494.目标和,474.一和零

本题可以转化为:将石头分成尽量重量相同的两堆(重量相同相撞为0),分成两堆后剩下的石头重量就是题解。dp[j]表示容量为j的背包,最大可以携带的石头重量(价值)为dp[j],石头的重量是 stones[i],石头的价值也是 stones[i],所以递推公式为dp[j - stones[i]] + stones[i])表示消耗了 stones[i]的重量,获得了stones[i]的价值(重量)

2024-05-21 17:34:20 220

原创 代码随想录算法训练营第三十二天|122.买卖股票的最佳时机 II,

122.买卖股票的最佳时机 II。

2024-05-16 18:16:44 222

原创 代码随想录算法训练营第四十一天|416. 分割等和子集

首先是二维背包。递推公式表明推导出dp[i][j]需要dp[i-1][j],有两种推导途径1.现在背包剩余的容量j不够再放下标为i的物品,所以背包内的价值不变。2.背包内剩余容量还够放下物品,[j - weight[i]] + value[i]表示在dp[i-1][j]的基础上消耗了weight[i]的容量,额外得到了value[i]的价值。dp数组的初值也可以推导,dp[i][0]为0,因为容量为0,放下的物品为0,所以价值为0.

2024-05-16 17:00:06 290

原创 代码随想录算法训练营第三十一天|455.分发饼干,376. 摆动序列,53. 最大子序和

优先把小饼干分给胃口值小的,或者是把大饼干分给胃口大的。这里有一些初始值的设置是为了应对一些特殊情况的因为当nums尺寸大于等于2时,摆动序列长度至少为1;这里加上等于号是因为中间存在平坡的情况,如果不加等于号的话,第一个2其实也算摆动序列,但是不会被计入。result++;// 注意这里,只在摆动变化的时候更新prediff这里只在摆动变化时更新pre是为了防止非严格单调上升的序列在平坡开始处和平坡截止处各计算一次,导致摆动序列结果多了。

2024-05-15 20:07:01 310

原创 代码随想录算法训练营第四十天|343. 整数拆分,96.不同的二叉搜索树

dp[3],就是 元素1为头结点搜索树的数量 + 元素2为头结点搜索树的数量 + 元素3为头结点搜索树的数量。这里取到j <= i / 2是因为在拆成多个数字相乘的时候,一定是拆分成m个近似相同的子数相乘才是最大的。元素1为头结点搜索树的数量 = 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量。元素2为头结点搜索树的数量 = 右子树有1个元素的搜索树数量 * 左子树有1个元素的搜索树数量。元素3为头结点搜索树的数量 = 右子树有0个元素的搜索树数量 * 左子树有2个元素的搜索树数量。

2024-05-15 16:09:12 258

空空如也

空空如也

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

TA关注的人

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