
牛客网题解分析
文章平均质量分 65
jk_101
不停的学习。
展开
-
MATLAB中expm1函数用法
expm1函数的功能是针对较小的 X 精确计算 exp(X)-1。原创 2023-10-13 10:00:00 · 543 阅读 · 0 评论 -
【牛客网题目】合并k个已排序的链表
还原的时候呢,将每个子问题和它相邻的另一个子问题利用上述双指针的方式,1个与1个合并成2个,2个与2个合并成4个,因为这每个单独的子问题合并好的都是有序的,直到合并成原本长度的数组。“治”指的是将子问题单独进行处理。经过分治后的子问题,需要将解进行合并才能得到原问题的解,因此整个分治过程经常用递归来实现。如果是两个有序链表合并,我们可能会利用归并排序合并阶段的思想:准备双指针分别放在两个链表头,每次取出较小的一个元素加入新的大链表,将其指针后移,继续比较,这样我们出去的都是最小的元素,自然就完成了排序。原创 2023-09-04 10:11:10 · 280 阅读 · 0 评论 -
【牛客网题目】合并两个排序的链表
对于问题2,跟迭代方法中的一样,如果PHead1的所指节点值小于等于pHead2所指的结点值,那么phead1后续节点和pHead节点继续递归。输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。一般创建单链表,都会设一个虚拟头结点,也叫哨兵,因为这样每一个结点都有一个前驱结点。空间复杂度:O(m+n),每一次递归,递归栈都会保存一个变量,最差情况会保存(m+n)个变量。写递归代码,最重要的要明白递归函数的功能。时间复杂度:O(m+n),m,n分别为两个单链表的长度。原创 2023-09-01 14:48:36 · 173 阅读 · 0 评论 -
【牛客网题目】链表中的节点每k个一组翻转
反转以a为头结点的链表其实就是反转a到null之间的结点,那么反转a到b之间的结点就只需要吧null改为b是不是就可以实现了?: 0≤n≤2000 , 1≤k≤2000 ,链表中每个元素都满足0≤val≤1000;要求空间复杂度 O(1),时间复杂度 O(n)如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样。将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表。对于k=2 , 你应该返回 2→1→4→3→5。对于 k=3 , 你应该返回3→2→1→4→5。给定的链表是 1→2→3→4→5。原创 2023-09-01 09:34:29 · 269 阅读 · 0 评论 -
【牛客网题目】链表内指定区间反转
2调用3完成局部反转后,会弹栈,每次弹出其实是当前父函数里head的下一个结点反转后的链表,只需要重新的铜鼓当前的head->next = reversePart。根据head->next, m-1, n-1,当m=1的时候,也正是反转开始结点,此时的n结点也正好是反转的结束结点。将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度O(n),空间复杂度O(1)。给出的链表为 1→2→3→4→5→NULL, m=2,n=4m=2,n=4,返回 1→4→3→2→5→NULL.原创 2024-04-07 16:36:57 · 428 阅读 · 1 评论 -
【牛客网题目】反转链表
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。3)nex指针指向待反转链表的第二个节点,目的是保存链表,因为cur改变指向后,后面的链表则失效了,所以需要保存。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。1)pre指针指向已经反转好的链表的最后一个节点,最开始没有反转,所以指向nullptr。2)cur指针指向待反转链表的第一个节点,最开始第一个节点待反转,所以指向head。原创 2023-08-31 20:53:02 · 161 阅读 · 0 评论 -
状态机-非重叠的序列检测
上面六种状态分别代表已接收到0个......5个有效数据。本题和不重叠序列检测不同,后者要求以每六个输入为一组,所以需要配合计数器,而本题不用。1、进行非重叠检测 即101110111 只会被检测通过一次。输入信号 clk rst data。2、寄存器输出且同步输出结果。输出信号 flag。原创 2024-05-24 13:48:48 · 444 阅读 · 1 评论 -
整数倍数据位宽转换8to16
8bit数据至16bit数据,相当于2个输入数据拼接成一个输出数据,出于对资源的节省以及时序要求,采用1个8bit的寄存器(data_lock)进行数据缓存。根据时序图,数据是在第二个数据到来之后输出,当仅有一个数据到来时,不产生输出,所以内部需要一个指示信号(flag),用来指示数据缓存状态。根据时序图, data_out是在两个数据输入之后的下一个时钟周期产生输出,如果采用两个寄存器缓存两个数据,那么第二个数据还没缓存进寄存器后就要输出数据,这样不能实现时序要求的数据输出。data_out产生电路。原创 2024-05-28 08:41:31 · 601 阅读 · 1 评论 -
非整数倍数据位宽转换8to12
根据时序图,数据是在第二个数据到来之后输出,当仅有一个数据到来时,不产生输出,所以内部设计一个计数器(valid_cnt),用来指示数据接收状态。本题要求实现8bit数据至12bit数据的位宽转换电路,由接口电路图可知,valid_in信号会跟随指示data_in数据有效,同时要求输出valid_out信号跟随指示data_out数据。当仅有一个数据输入后,不会产生输出valid_out和data_out,而是会等待下一个数据到来之后完成两个数据的拼接,才产生输出valid_out和data_out。原创 2024-05-31 08:43:05 · 1018 阅读 · 1 评论 -
非整数倍数据位宽转换24to128
因为128×3=24×16128\times3=24\times16128×3=24×16,所以每输入16个有效数据,就可以产生三个完整的输出。valid_in用来指示数据输入data_in的有效性,valid_out用来指示数据输出data_out的有效性;实现数据位宽转换电路,实现24bit数据输入转换为128bit数据输出。其中,先到的数据应置于输出的高bit位。输入数据是24bit,输出数据是128bit。注:解题分析来源于网友,如有侵权,请告删之。,每当输入有效时,将数据从低位移入。原创 2024-05-22 14:10:28 · 1017 阅读 · 1 评论 -
数据累加输出
当下游ready_b拉高,本来由于之前ready_b为低而反压上游的ready_a立即拉高,开始接收上游数据,注意,此细节,也是体现了题目要求的数据传输无气泡。对于ready_a输出信号的产生,如果下游ready_b拉高,表示下游可以接收模块输出数据,那么此时ready_a应拉高,即本模块可以接收上游数据;当上游握手成功,将输入数据累加进寄存器;在data_out准备好,valid_b拉高时,如果下游的ready_b为低,表示下游此时不能接收本模块的数据,那么,将会拉低ready_a,以反压上游数据输入;原创 2024-05-23 08:45:07 · 791 阅读 · 1 评论 -
数据串转并电路
实现串并转换电路,输入端输入单bit数据,每当本模块接收到6个输入数据后,输出端输出拼接后的6bit数据。计数器初始值是0,每接收一个数据,计数器加1,当计数器再次循环到0时,表示已经接收到6个数据,可以输出拼接结果。本模块与下游采用valid_only握手机制,这是一种单向指示性握手机制,已接收到6个数据后,valid_b拉高一个时钟周期,指示输出数据有效性。本模块与上游采用valid_ready握手机制,当valid_a拉低,表示与上游握手未成功,则此时data_a的数据无效,不存入本模块当中;原创 2024-05-29 08:47:03 · 564 阅读 · 1 评论 -
信号发生器
请编写一个信号发生器模块,根据波形选择信号wave_choise发出相应的波形:wave_choice=0时,发出方波信号;wave_choice=1时,发出锯齿波信号;wave_choice=2时,发出三角波信号。wave_choise:2比特位宽的信号,根据该信号的取值不同,输出不同的波形信号。wave:5比特位宽的信号,根据wave_choise的值,输出不同波形的信号。产生锯齿波时,需要从0增加到20,所以周期是21。由波形图得知,刚进入三角波模式时,注:解题分析来源于网友,如有侵权,请告删之。原创 2024-04-16 16:09:37 · 512 阅读 · 1 评论 -
输入序列不连续的序列检测
请编写一个序列检测模块,输入信号端口为data,表示数据有效的指示信号端口为data_valid。当data_valid信号为高时,表示此刻的输入信号data有效,参与序列检测;当data_valid为低时,data无效,抛弃该时刻的输入。当输入序列的有效信号满足0110时,拉高序列匹配信号match。下面的代码中,被注释掉的部分是符合题目要求的。match:当输入信号data满足目标序列,该信号为1,其余时刻该信号为0。data_valid:输入信号有效标志,当该信号为1时,表示输入信号有效。原创 2024-04-09 09:18:01 · 297 阅读 · 1 评论 -
不重叠序列检测
请编写一个序列检测模块,检测输入信号(a)是否满足011100序列, 要求以每六个输入为一组,不检测重复序列,例如第一位数据不符合,则不考虑后五位。当信号满足该序列,给出指示信号match。请使用Verilog HDL实现以上功能,要求使用状态机实现,画出状态转化图。not_match:当输入信号a不满足目标序列,该信号为1,其余时刻该信号为0。match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0。注:解题分析来源于网友,如有侵权,请告删之。为启动态,系统复位时,处于该状态。原创 2024-04-12 15:11:46 · 609 阅读 · 1 评论 -
含有无关项的序列检测
题目要求检测a的序列,a为单bit输入,每个时刻可能具有不同的值,题目要求检测前三位和后三位,不要求检测中间三位,如果把如果把中间的XXX,分别列出:000,001,010,011,100,101,110,111,分别检测,代码过于累赘,考虑分别检测前三位和后三位,分成两个小段的序列检测。请编写一个序列检测模块,检测输入信号a是否满足011XXX110序列(长度为9位数据,前三位是011,后三位是110,中间三位不做要求),当信号满足该序列,给出指示信号match。a:单比特信号,待检测的数据。原创 2024-06-04 11:15:18 · 513 阅读 · 1 评论 -
输入序列连续的序列检测
值得注意的是:当前N位数值匹配则N+1位是否匹配,当出现某一位不匹配时,注意不一定从第一位开始重新判断,例如出现前五位数值为01110,第六位数值出现1,不匹配目标序列,但第五,第六位数值符合第一,第二位数值,可以继续判断下一位是否匹配目标序列的第三位,而不需要从第一位开始。题目要求检测a的序列,a为单bit输入,每个时刻可能具有不同的值,当连续8个时钟周期中a的值依次为01110001,判断a出现目标序列,把匹配信号match拉高。match:当输入信号a满足目标序列,该信号为1,其余时刻该信号为0。原创 2024-06-10 10:28:26 · 902 阅读 · 1 评论 -
边沿检测功能实现
当前一时刻为0,这一时刻为1,说明信号出现上升沿,即 a&&!a_tem = 1;当前一时刻为1,这一时刻为0,说明信号出现上升沿,即!有一个缓慢变化的1bit信号a,编写一个程序检测a信号的上升沿给出指示信号rise,当a信号出现下降沿时给出指示信号down。注:rise,down应为单脉冲信号,在相应边沿出现时的下一个时钟为高,之后恢复到0,一直到再一次出现相应的边沿。rise:单比特信号,当输入信号a出现上升沿时为1,其余时刻为0。down:单比特信号,当输入信号a出现下降沿时为1,其余时刻为0。原创 2024-05-30 08:40:19 · 493 阅读 · 1 评论 -
ROM的简单实现
要实现ROM,首先要声明数据的存储空间,例如:[3:0] rom [7:0];变量名称rom之后的[7:0]表示需要多少个数据,指深度,注意这里深度为8,应该是使用[7:0],而不是[2:0];实现一个深度为8,位宽为4bit的ROM,数据初始化为0,2,4,6,8,10,12,14。声明存储变量之后,需要对rom进行初始化,写入数据,然后将输入地址作为rom的索引值,将索引值对应的数据输出。初始化完成之后的rom的形式如下,内部存在地址和数据的对应关系,通过输入相应的地址,可以得到相应的输出数据。原创 2024-05-27 08:49:47 · 497 阅读 · 1 评论 -
根据状态转移图实现时序电路
由状态转换图可得出,电路共4个状态,所以使用2个寄存器来实现状态的寄存。两个寄存器的输出为Q1和Q0,两个寄存器的输入为D1和D0。本题提供的是状态转换图,可采用状态机实现,也可采用列激励方程、输出方程,进而用D触发器和组合逻辑电路实现。本题解采用第二种方案实现。某同步时序电路的状态转换图如下,→上表示“C/Y”,圆圈内为现态,→指向次态。请使用D触发器和必要的逻辑门实现此同步时序电路,用Verilog语言描述。电路的接口如下图所示,C是单bit数据输入端。注:解题分析来源于网友,如有侵权,请告删之。原创 2024-04-13 17:08:01 · 1155 阅读 · 1 评论 -
根据状态转移表实现时序电路
某同步时序电路转换表如下,请使用D触发器和必要的逻辑门实现此同步时序电路,用Verilog语言描述。本想着用状态机,不过题目要求使用D触发器,差点没想出来。注:解题分析来源于网友,如有侵权,请告删之。电路的接口如下图所示。原创 2024-04-06 16:23:13 · 441 阅读 · 1 评论 -
数据选择器实现逻辑电路
当AB=00时选通D0而此时L=0,所以数据端D0接0:当AB=01时选通D1,由真值表得此时L=C,即D1应接C:当AB为10和11时,D2和D3分别接~C和1。将变量A、B接入4选1数据选择器选择输入端S0 S1。将变量C分配在数据输入端。从表中可以看出输出L与变量C的关系。数据选择器代码如下,可在本题答案中添加并例化此数据选择器。请使用此4选1数据选择器和必要的逻辑门实现下列表达式。注:解题分析来源于网友,如有侵权,请告删之。A接S1,B接S0。原创 2024-03-27 14:54:37 · 815 阅读 · 1 评论 -
使用3-8译码器①实现逻辑函数
由于译码器的输出为最小项取反,而逻辑函数可以写成最小项之和的形式,故可以利用附加的门电路和译码器实现逻辑函数。由于译码器的输出为最小项取反,下面需要将表达式中的最小项转换为最小项取反的形式。由上式可知,采用与非门即可实现该电路的组合逻辑输出。下表是74HC138译码器的功能表.②请使用3-8译码器①和必要的逻辑门实现函数。注:解题分析来源于网友,如有侵权,请告删之。逻辑式转换为最小项的形式。原创 2024-04-10 16:46:10 · 1999 阅读 · 1 评论 -
实现3-8译码器①
下表是74HC138译码器的功能表.1xxxx11111111x1xxx11111111xxxxx11111111000000111111100001101111110001011011111000111110111100100111101110010111111011001101。原创 2024-06-11 08:35:04 · 1154 阅读 · 1 评论 -
用3-8译码器实现全减器
请使用3-8译码器和必要的逻辑门实现全减器,全减器接口图如下,A是被减数,B是减数,Ci是来自低位的借位,D是差,Co是向高位的借位。38译码器的输出实际上包含了输入A2 A1 A0组成的所有最小项,而全减器作为组合电路,其输出最终可化简为最小项的形式。由于译码器的输出为最小项取反,而逻辑函数可以写成最小项之和的形式,故可以利用门电路和译码器实现逻辑函数。由于译码器的输出为最小项取反,下面需要将表达式中的最小项转换为最小项取反的形式。由上式可知,采用与非门即可实现该电路的组合逻辑输出。原创 2023-10-12 09:15:44 · 2413 阅读 · 0 评论 -
使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器
使4个或门都打开,L[2:0]取决于U0的输出,而L[3]=GS1总是等于0,所以输出代码在0000-0111之间变化。当EI1=1且A[15:8]中至少有一个为高电平输人时,EO1=0,使EI0=0,U0禁止编码,此时L[3]=GS1=1,L[2:0]取决于U1的输出,输出代码在1000~1111之间变化,并且A的优先级别最高。当E=1时,U1允许编码,若A[15:8]均无有效电平输人,则EO1=1,使EI0=1,从而允许U0编码,因此U1的优先级高于U0。注:解题分析来源于网友,如有侵权,请告删之。原创 2023-10-13 09:04:34 · 1799 阅读 · 0 评论 -
优先编码器Ⅰ
GS的功能是,当EI为1,且至少有一个输入端有高电平信号输入时,GS为1.表明编码器处于工作状态,否则GS为0,由此可以区分当电路所有输入端均无高电平输人,或者只有I[0]输入端有高电平时,Y[2:0]均为000的情况。当El=1时,编码器工作:而当E1=0时,禁止编码器工作,此时不论8个输入端为何种状态,3个输出端均为低电平,且GS和EO均为低电平。只有在EI为1,且所有输入端都为0时,EO输出为1.它可与另一片编码器的EI连接,以便组成更多输入端的优先编码器。下表是8线-3线优先编码器Ⅰ的功能表。原创 2024-06-20 08:58:54 · 321 阅读 · 1 评论 -
用优先编码器①实现键盘编码电路
对照此键盘编码电路真值表和编码器的真值表可以看出,将编码器输出反向后,就可以实现表格中蓝色的部分功能。按键悬空时,按键输出高电平,按键按下时,按键输出低电平;用S_n[0]~S_n[9]表示10个按键,分别对应编码器的10个输入端,工作状态用GS表示,当有按键按下时,GS是1,当无按键按下时,GS是0.请使用优先编码器①实现键盘编码电路,可添加并例化题目中已给出的优先编码器代码。要求:键盘编码电路要有工作状态标志,以区分没有按键按下和按键0按下两种情况。注:解题分析来源于网友,如有侵权,请告删之。原创 2024-04-11 15:17:32 · 888 阅读 · 1 评论 -
优先编码器电路①
本优先编码器,可采用case语句实现,注意到真值表中,出现了x状态,所以考虑采用casex语句实现。由真值表可以看出,当选择端是x时,输入端是任何状态,输出都将是1.①请用Verilog实现此优先编码器。下表是某优先编码器的真值表。注:题目分析来源网友,如有侵权请告删之。原创 2024-04-18 19:40:21 · 423 阅读 · 1 评论 -
4bit超前进位加法器电路
虽然RCA结构简单易于理解,但容易看出,每一位的运算结果SkS_kSk都要依赖进位CkC_{k}Ck才能得出。如下图所示,这会使得RCA的关键路径变得很长,而长关键路径会让电路难以满足时序要求。而根据之前的分析,RCA产生C4需要3+2+2+2=9级路径。但LCA的逻辑门扇入扇出比较大,面积和复杂度都比较高。超前进位加法器的思想是并行计算进位Ck,以缩短关键路径。超前进位加法器是通过公式直接导出最终结果与每个输入的关系,是一种用面积换性能的方法。半加器是最简单的加法器。全加器是多bit加法器的基础。原创 2024-04-21 15:59:37 · 1798 阅读 · 1 评论 -
4位数值比较器电路
某4位数值比较器的功能表如下。关于门级描述方式,需要注意的是。原创 2024-05-18 20:04:22 · 1696 阅读 · 1 评论 -
使用函数实现数据大小端转换
在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。C:函数function有一个返回值,缺省时默认返回1 bit的reg寄存器类型数据,任务task没有返回值;B:函数至少有一个输入变量,不能包含任何输出和双向端口,任务可以有任意多个输入、双向和输出变量;(2)任务可以描述组合逻辑和时序逻辑,可以有时延;(1)任务能调用任务和函数,但是函数只能调用函数,不能调用任务;D:函数不能启动任务,但是任务能启动其他任务或函数。原创 2024-04-26 13:41:29 · 571 阅读 · 2 评论 -
使用子模块实现三输入数的大小比较
请编写一个子模块,将输入两个8bit位宽的变量data_a,data_b,并输出data_a,data_b之中较小的数。并在主模块中例化,实现输出三个8bit输入信号的最小值的功能。在数字芯片设计中,通常把完成特定功能且相对独立的代码编写成子模块,在需要的时候再在主模块中例化使用,以提高代码的可复用性和设计的层次性,方便后续的修改。本次代码使用了三个比较器完成。d:8bit位宽的无符号数,表示a,b,c中的最小值。rst_n:异步复位信号,低电平有效。a,b,c:8bit位宽的无符号数。原创 2024-05-20 14:04:09 · 257 阅读 · 1 评论 -
使用generate…for语句简化代码
在某个module中包含了很多相似的连续赋值语句,请使用generata…for语句编写代码,替代该语句,要求不能改变原module的功能。(1)generate for的循环变量必须用genvar声明,for的变量可以用reg、integer整数等多种类型声明;使用Verilog HDL实现以上功能并编写testbench验证。(3)generate for后面必须给这个循环起一个名字,for不需要;data_out:8bit位宽的无符号数。data_in:8bit位宽的无符号数。原创 2024-05-11 08:43:38 · 330 阅读 · 1 评论 -
求两个数的差值
题目要求求解两个无符号数的差值,也就是将较大值减去较小值,首先需要比较输入数值的大小关系,然后选择不同的操作。对于输入数值a,b,可能存在两种情况:a>b和a≤b,符合if-else语句的逻辑,可以使用if-else语句完成功能的实现。根据输入信号a,b的大小关系,求解两个数的差值:输入信号a,b为8bit位宽的无符号数。如果a>b,则输出a-b,如果a≤b,则输出b-a。rst_n:复位信号,低电平有效。a,b:8bit位宽的无符号数。c:8bit位宽的无符号数。原创 2024-05-13 08:43:41 · 593 阅读 · 1 评论 -
多功能数据处理器
根据指示信号select的不同,对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数,当select信号为0,输出a;即:有符号A +无符号B时,会将补码表示的有符号A当成无符号数A1,,再计算A1+B,这样得到的结果就是错的了。(1)涉及到有符号数运算时,和有符号相关的输入、输出、中间变量均定义成signed有符号数,这样全部遵循有符号数运算规则;这其中,如果加数中有无符号数,那么就会按照无符号运算。有符号数+有符号数=有符号数。a,b:8bit位宽的有符号数。c:9bit位宽的有符号数。原创 2024-05-21 11:08:11 · 168 阅读 · 1 评论 -
位拆分与运算
需要考虑数据锁存的问题,一定要在sel为0的时候进行锁存,只有此时的写入才是有效的(validout的下降沿写入有效),同时存在多种情况且没有优先级问题,建议使用case语句。寄存器的位是可以分开单独运算的,并不是一个输入就一定是一个数据,在很多情况下,一个输入既包括数据又包括地址等其他有效信息。现在输入了一个压缩的16位数据,其实际上包含了四个数据[3:0][7:4][11:8][15:12],3:输出[3:0]+[15:12]2:输出[3:0]+[11:8]1:输出[3:0]+[7:4]原创 2024-05-16 08:18:34 · 372 阅读 · 1 评论 -
移位运算与乘法
根据寄存器的原理,由于是二进制,所以进位和退位为x2或者/2,同样除7可以使用进位3然后减去本身的做法,这样就将乘除法运算转化为位运算,这是一种比较简单的整数运算处理。需要给出一个计数器的状态机,注意d输入不是随时有效的,只有在cnt计数为0的那个时钟沿,d输入有效,因此需要设计一个寄存器din,在cnt为0时候锁存d的值。已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效)输入信号 d, clk, rst。原创 2024-04-02 17:17:53 · 592 阅读 · 1 评论 -
奇偶校验位
对输入数据添加1位0或者1,使得添加后的数包含奇数个1;比如:0110,奇校验位为1,变为01101。现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验,0输出偶校验):对输入数据添加1位0或者1,使得添加后的数包含偶数个1;输出信号 check。比如:0110,偶校验位为0,变为01100。输入信号 bus sel。原创 2024-06-01 22:42:28 · 537 阅读 · 1 评论 -
异步复位的串联T触发器
需要注意寄存器翻转的逻辑,第二寄存器是否翻转取决于第一个寄存器是否为1,前者输出情况有三种:在data输入控制为1下从0到1到0不断翻转,data为0锁在1,data为0锁在0。在testbench中,clk为周期5ns的时钟,rst为低电平复位。输入信号 data, clk, rst。T触发器是进入的值为1的时候,寄存的值发生翻转;(其中Qn为现态,Qn+1为次态)原创 2024-04-20 17:46:09 · 653 阅读 · 2 评论