KMP算法的Next数组的优化

KMP算法next数组计算方法的优化 KMP算法的原理就是利用相匹配的前缀子串与后缀子串,来确定失配时下次对齐的位置; 其中最关键的就是next数组的确立; 数据结构课本上经典的例子: void getNext(const char *pStr, int *nextArr) { int i = 0, k = -1, pLen = strlen(pStr); nextArr[i] = k; int mLen = pLen 阅读详情

Next数组是KMP算法的一个难点,而求Next数组时最难的不过就是k = Next[k] 这一行了。首先要理解的是,k是在模式串当前角标之前已经匹配的前缀后缀的长度。
Next[i] 表示在角标i 之前已经匹配的前缀后缀的长度。
如果s[j] == s[k], 说明当前前缀和后缀可以匹配到长度为k的相同字符;
如果s[j] != s[k], 就说明了当前前缀后缀无法匹配到长度为k+1的相同字符,这个时候需要找有没有更短的可能,所以就有了k = Next[k]。

这么说肯定不好理解,还是通过图片来理解。
在这里插入图片描述
到最后一位的时候, 发现无法匹配了,也就是找不到K+1了,这时候需要回退一下,看看能不能找到比k长度小的相同字符串,也就执行了k = Next[k];也就是到了下图的位置。
在这里插入图片描述
你会发现这里不正好是上上次匹配的地方嘛,也就证明了第六位不能匹配第十位,那就往回退一下,看一下能不能委屈求全一下,找一个短一点的前缀来匹配第十位。

**

优化Next数组

**
接下来进入我们今天的正题,对于下面的图片:
在这里插入图片描述
当到达D后不再匹配,按照以前的KMP算法,是变成了下面的图片:
在这里插入图片描述
这个时候D又是与B失配,原因很简单,p[Next[4]] = p[1] = b, 而接下来的匹配就是p[1]和D进行匹配,那必然是失配的。我们应该避免出现p[j] = p[Next[j]];,如果出现了,那么下一步必然失配。
可能有人就想到了,那我就再KMP里面修改代码,如果p[Next[j]] = p[j], 那就继续递归寻找。
接下来给出优化Next数组的代码

#include <iostream>

using namespace std;

void GetNext(string s)
{
	int len = s.size();
	int k = -1, j = 0;
	
	while (j < len)
	{
		if (k == -1 || s[j] == s[k])
		{
			k++;
			j++;
			
			if (s[j] != s[k])
			{
				Next[j] = k;
			}
			else
			{
				Next[j] = Next[k];
			}
		}
		else
		{
			k = Next[k];
		}
	}
}

下面给出Next数组和优化后的Next数组的图片:
在这里插入图片描述

KMP模式匹配算法原理分析、next数组优化及java实现 朴素的模式匹配算法通过对主串进行回溯,每次在匹配不成功时回溯到主串的i-j+2的位置(i为主串中匹配失败的位置,j为模式串中匹配失败的位置,其中模式串字符数组从位置1开始),KMP算法采用next数组,避免对主串的回溯,主要分析模式字符串的特征,确定在匹配失败情况下通过next数组获取应该模式串应该回溯的位置,next数组目的在于当主串和模式串的字符匹配发生失败时,可以获取模式串回溯的位置,从新和主串进行匹配 阅读详情

相关推荐

KMP算法的Java实现(优化和非优化求next数组)

最近学习在字符串匹配时,会用到KMP算法,比BF(暴力)算法性能提高了许多,于是用Java实现了一下。算法中主要问题就是求得next数组,在这里也出现了可以优化的地方,算法原理讲解很多博客也给出,代码供上。。。写的不好,请指出问题。package algorithm; public class KMR { /** * 记m=match.length() * 此算法为未改进的KMP...

Andy的博客 930

四种next数组及KMP算法在不同next数组下的解释

文章介绍不同next数组的区别以及相应的KMP算法的区别,并解释一下生成next数组的原理。

m0_73451749的博客 955

深入解析KMP算法:从Next数组到优化策略

本文深入解析KMP算法,从基础原理到Next数组的构建与优化策略,详细介绍了如何通过智能跳转提升字符串匹配效率。通过对比暴力匹配与KMP算法的性能差异,展示了Next数组在减少无效比较中的关键作用,并提供了优化版NextVal数组的实现代码,帮助开发者在处理重复字符时获得更高性能。

weixin_30892037的博客 427

KMP算法(详解+图解 BF算法 next数组的优化问题 字符串匹配问题 c语言实现)

字符串匹配问题,KMP算法、暴力求解法 strstr函数的模拟实现 next数组的优化问题

日向晚,声声慢的博客 2371

Axure RP 10表单数据提交制作

本文介绍了如何使用Axure RP 10实现表单数据提交。

Peppaaa的博客 990

Rocky Linux 9 离线环境Docker部署实战:从依赖打包到服务启动

本文提供了一份详尽的Rocky Linux 9离线环境Docker部署实战指南。针对无法访问外网的生产或内网服务器,文章详细讲解了如何在联网跳板机上下载Docker二进制包及所有系统依赖RPM包,并完成打包。随后,手把手指导在离线服务器上进行依赖安装、二进制文件部署、systemd服务配置、SELinux与防火墙调优,最终实现Docker服务的成功启动与验证。

weixin_28363123的博客 138

KMP算法及next数组优化

title: KMP算法 categories: Airthmetic tags: Array declare: true wordCount: true abbrlink: 2da0528d data: 2020-07-21 13:35:10 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BwiuEzpu-1595309423313)(https://i.loli.net/2020/07/21/v6rbVX8UqOip12W.jpg)] 一、KMP算法简介 当目标串txt.

喜欢美好事物 1086

【Fluent】太阳辐射模型—Solar Ray Tracing

一、引言Fluent提供了一个太阳能负载模型,可用于计算进入计算域的太阳光线的辐射效应。该模型可以分为:太阳光线追踪和太阳辐照。其中太阳辐照需要使用DO或MC模型,直接向辐射模型提供外光束方向和强度参数。太阳光线追踪不限制辐射模型,可以独立于辐射方程使用,甚至可以在辐射模型off的情况下使用。本文主要介绍太阳光线追踪模型。该模型非常适用于以下领域汽车气候控制 (ACC) 应用建筑物中的人体热舒适建模应用该模型使用着色算法进行太阳光线追踪。光线会透过半透明的面加载在照射面上。

a5567899的博客 7588

C语言数据结构+KMP算法next数组优化计算方法+优化后子串匹配代码实现

本篇文章主要讲解的是如何进行KMP算法中的next数组的计算,以及对next数组进行优化从而实现高效匹配字符串的子串

qq_63713328的博客 1662

【SpringBoot 4.x 第2节】夯爆了,学习 Spring Boot 4.x 前,需要具备哪些 Java 基础?

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 4567

泰山派rk3566 audio音频基础介绍

本文介绍了嵌入式系统中音频处理的基础知识,重点围绕RK3566平台的音频子系统展开。文章首先解释了音频信号从模拟到数字的转换过程,包括采样率、位深和声道等核心概念。随后详细分析了嵌入式音频开发中的关键接口:I2C用于控制音频编解码器,I2S作为专用音频数据传输总线,以及PCM作为原始音频格式和ALSA设备抽象的双重含义。通过对这些基础概念和接口的解析,为在RK3566平台上进行音频驱动开发和应用调试提供了理论基础。

qq_37077309的博客 294

KMP算法代码实现以及next数组优化

再看此篇文章之前,建议先看下我写的上一篇文章,这样确保文章连贯性,更易理解本章内容。

2301_78670085的博客 1015

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

Coding... 2831

KMP算法之最终实现及 NEXT数组的优化

让编程改变世界 Change the world by program   http://blog.fishc.com/2303.html KMP算法之最终实现及优化   搞定了NEXT数组,KMP算法就易如反掌了。 一起来完成:kmp.c   KMP模式匹配算法改进   后来有人发现,KMP算法是有缺陷的。比如我们的主串 S =“aaaabcde”,子串 T =“a

miao6664659的专栏 1572

Allegro技巧----相同模块复用实现快速布局

使用Allegro软件进行PCB Layout设计时,当电路图中有很多路相同的模块,使用模块复用的的操作方法,可以显著提高工作效率,同时也可以使PCB布局在整体上显得美观。 如图,有8个相同的ADC采样电路模块,它们在原理图中的电路也是一样的,对于这多个相同的电路模块,如果一个个元器件布局很明显做了很多重复机械的劳动,效率低下;但是强大的Allegro软件早就考虑到了这点,只需要在PCB中做好其中的一个,则其余相同的模块通过复用的方式,可以快速完成,方便省事还美观。 具体步骤: 1.首先完成一个模块的PC

sinat_15677011的博客 5655

点云配准SIFT+SI+RANSAC+ICP

Spin Image(SI)是一种用于点云数据描述的特征描述子,广泛应用于三维点云配准、识别和重建等领域。它能够捕捉点云中的局部几何信息,具有旋转不变性和部分平移不变性等优点,是一种非常强大的特征描述子。Spin Image是一种强大的点云特征描述子,具有旋转不变性、局部几何信息捕捉等优点,适用于点云配准、目标识别和三维重建等多个领域。通过合理选择局部区域、建立参考框架和计算描述子,可以充分利用Spin Image描述点云的特征,从而实现各种三维场景分析和处理任务。

点云兔子的博客 558

KMP算法以及优化(代码分析以及求解next数组和nextval数组)

KMP算法以及优化(代码分析以及求解next数组和nextval数组) 来了,数据结构及算法的内容来了,这才是我们的专攻,前面写的都是开胃小菜,本篇文章,侧重考研408方向,所以保证了你只要看懂了,题一定会做,难道这样思想还会不会么?如果只想看next数组以及nextval数组的求解可以直接跳到相应部分,思想总结的很干~~ 网上的next数组版本解惑 先总结一下,一般KMP算法的next数组结果有两个版本,我们需要知道为什么会存在这种问题,其实就是前缀和后缀没有匹配的时候next数组为0还是为1,两个版本当

YY_hide_on_bush的博客 642

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【C++学习】KMP 算法优化:从 next 数组到 nextval,让匹配效率再升级

本文将从「标准 next 数组的痛点」出发,详解 nextval 的核心思想,并结合实际代码(你提供的实现)拆解优化逻辑,帮你彻底理解这一 KMP 优化技巧。

qq_42647082的博客 1055

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

KMP算法--Next数组详解与优化

本篇文章直接跳过蛮力算法以及一些简单背景,着重讨论Next数组的意义以及其是如何工作的,并对如何求Next数组做详细记录。 1.背景 1.1 KMP算法的应用:KMP算法用来解决模式串匹配问题。 1.2 为什么要用KMP算法:普通的蛮力算法时间复杂度为O(n*m),而KMP为O(n+m)。 2.KMP算法思想 2.1 KMP算法的思想:(称T为目标串,P为待查找字串) 目标串T的 ...

帅比王的博客 1万+

【数据结构】字符串匹配|BF算法|KMP算法|next数组的优化

字符串匹配算法是在实际工程中经常遇到的问题,也是各大公司笔试面试的常考题目,本文主要介绍BF算法(最好想到的算法,也最好实现)和KMP算法(最经典的)

qq_73017178的博客 3262

数据结构——KMP算法优化(改进next数组,用nextval数组)

KMP算法优化 对KMP算法进行的优化,主要是在于对next数组进行的优化 把优化后的数组命名为nextval[ ] 首先我们先看KMP算法的相关代码: void get_next(String T,int next[]){ int i=1,j=0; next[1]=0; while(i<T.length){ if(j==0||T.ch[i]==T.ch[j]){ ++i;++j; //若pi=pj,则next[j+1]=next[j]+1 next[i]=j;

#两个西柚 1448

kmp算法中next向量数组的编写与优化

next数组是在kmp算法中用于目标字符串回溯时使用的,类似于给目标字符串中每个字符一个特征值,方便回溯,而不是每次都只是单纯的向后移动一位的暴力对比,可以极大的降低时间消耗。 我们首先要理解next数组是如何产生的 以”abcdaabcab“为目标“abcddabcababcdaabcababcdaabcabaa”为主串为例,当为如下情况: abcddabcababcdaabcababcdaabcabaa ...

KDLyyds的博客 754

KMP算法深度解析:从next数组到nextval优化

本文深入解析KMP字符串匹配算法,从BF算法的痛点出发,详细讲解KMP的核心思想。重点剖析next数组的定义与推导方法,通过模式串"ababc"示例演示手工计算过程,并给出代码实现。针对next数组的缺陷,提出nextval优化方案,解释其避免无效回退的原理,并以"aaaab"为例展示nextval的计算过程。最后提供完整的KMP算法代码实现,帮助读者彻底掌握这一经典字符串匹配算法。全文兼顾理论推导与实践指导,适合算法学习者深入理解KMP的精髓。

2301_79956999的博客 413

数据结构与算法 - 字符串匹配优化:KMP算法的next数组原理

字符串匹配(String Matching)是指在一个文本串(Text)中查找一个模式串(Pattern)的过程。具体来说,就是给定一个文本串T和一个模式串P,找出P在T中出现的所有位置。文本串,模式串匹配结果:模式串P在文本串T中的第 0 个位置开始匹配成功,即。KMP算法由Donald Knuth、James Morris 和 Vaughan Pratt 三人于1977年提出,因此得名。它解决了暴力匹配中“回溯”带来的低效问题,通过预处理模式串,构建一个辅助数组(即next。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

KMP算法(暴力破解法的优化以及求next数组)

前言 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n) 。 问题是:在主串S中找到第一次出现完整子串P时的起始位置。 说简单点就是我们平时常说的关键字搜索。模式串就是关键字,如果它在一个

weixin_51522849的博客 657
上一篇: HDU2594--Simpsons’ Hidden Talents
下一篇: 拓展欧几里德算法笔记
忆南妄北
博客等级 码龄8年 35粉丝 172原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值