分类: c语言

31 篇文章

Trie 树
Trie 树,亦称前缀树,是一种高效处理字符串的基础数据结构。许多算法问题中,Trie 树因其能快速检索字符串的前缀匹配而备受青睐。在本文中,我们将从 Trie 树的基本插入与查询操作出发,详解为何节点编号 p 不会被限制在 26 个以内。1. Trie 树的基本结构Trie 树通常用于处理一组字符串,每个节点代表一个前缀。Trie 树的每个节点最…
KMP算法:字符串匹配的全面指南
Knuth-Morris-Pratt (KMP) 算法是一种高效的字符串匹配算法,它用于在一个文本串中搜索模式串的所有出现。与暴力匹配算法不同,KMP通过预处理步骤来避免不必要的比较,从而提高效率。在这篇博客中,我们将详细探讨KMP的工作原理、ne数组的构建过程,以及回退在算法中的关键作用。目录字符串匹配介绍KMP算法概述ne数组(部分匹配表)逐步…
高精度大数乘法
在日常编程中,当我们计算非常大的数时,普通的整型数据类型无法处理这种情况下的运算。在这种情况下,我们需要使用高精度大数乘法算法来进行计算。本文将带你深入了解大数乘法的原理、如何逐位计算以及如何正确处理进位问题。1. 什么是高精度大数乘法?高精度大数乘法就是处理那些超出基本数据类型(如 int 或 long long)表示范围的数值的乘法运算。对于这…
滑动窗口中的最小值
在日常的算法面试和刷题过程中,滑动窗口问题是非常常见的类型。今天我们来详细解答如何通过单调队列的方法找到滑动窗口中的最小值,并通过具体代码示例和步骤拆解,帮助大家更好地理解这一算法。问题描述给定一个数组和一个整数 k,我们需要找到该数组中每个大小为 k 的连续子数组中的最小值。举例来说,给定数组 a = [2, 1, 3, 4, 5],窗口大小为 …
C++ 环境配置教程:从零开始在 Windows 上搭建 C++ 编译环境
大家好!这篇文章将带你一步步配置 Windows 上的 C++ 开发环境。这是为新手准备的详细教程,无论你之前有没有编程经验,都可以轻松跟随完成。我们将使用 MinGW-W64 作为编译器,Visual Studio Code (VSCode) 作为代码编辑器。让我们从下载工具开始!第一步:下载 MinGW-W64 GCC 编译器我们需要一个编译器…
位运算
一、n的二进制表示中第k位是几 第一步:将n右移k位,即 n >> k,把第k位移到最低位。 第二步:通过与运算获取最低位的值,即 n & 1,判断第k位是0还是1。二、lowbit(x):返回x的最低位1及其后所有0所组成的数值例如:x = 1010(二进制) lowbit(x) = 10x = 101000(二进制) lowbit(…
puts函数换行作用
puts("") 的作用是换行。puts 函数是 C 标准库中的一个函数,用于将字符串输出到标准输出设备(通常是控制台),并在输出结束后自动换行。其函数原型如下:int puts(const char *str);主要功能:输出字符串:puts 函数会将传入的字符串参数 str 输出到标准输出(通常是终端或控制台)。自动换行:与…
阶乘末尾零优化
在计算 (b!) 的末尾有多少个连续的0时,可以通过模拟阶乘的乘法来计算整个大数阶乘,再统计结果中末尾的0的数量。然而,当 (b) 很大时,这种直接模拟阶乘的方法会导致运行时间和空间效率较低,容易超时。实际上,计算一个数的阶乘末尾有多少个0并不需要真的计算出整个阶乘。阶乘末尾0的数量实际上取决于阶乘中因子5的数量(因为2的数量总是比5多)。因此,可…
int类型的变量size()方法返回值进行比较。
从截图中,可以看到程序虽然被正确接受(Accepted),但编译时出现了一些警告。主要问题如下:警告信息警告内容显示在以下位置:warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<ch…
C++ 字典实现方法
在C++中没有像Python那样的内置“字典”(即dict)这种直接的数据类型,但可以使用std::map或者std::unordered_map来实现类似字典的功能。这些容器位于C++标准库的<map>或<unordered_map>头文件中。这两者都允许将“键-值对”进行存储和查找,像Python的字典一样,不过它们有一…