围绕 C++ 算法与公式,提供「理论 + 实验」的小工具集合
按分类浏览,选择实验进入演练
输入整数 a,计算 |a|,理解正数、负数与零的绝对值定义。
输入 a、m,计算 a mod m,并演示 (a+b) mod m、(a×b) mod m 等性质。
输入 a、b,得到商 q 与余数 r,理解 a = b×q + r 及与取模的关系。
输入底数 a 与正整数 k,用朴素乘法逐步计算 a^k(平方、立方等)。
输入 n,实验 n! 的计算过程,并查看 1! 到 n! 的变化。
输入 n 和 m,实验排列数 P(n,m) 的计算过程与具体排列结果。
输入 n 和 m,实验组合数 C(n,m) 的计算过程与具体组合结果。
输入行数 n,生成前 n 行杨辉三角,对应二项式 (a+b)^n 的展开系数。
输入两个整数 a 和 b,观察辗转相除法求 gcd(a,b) 的每一步推导。
输入数组,观察前缀和与差分数组的构造过程及互逆关系。
输入数组与若干查询/修改,观察树状数组(Fenwick Tree)维护前缀和的过程。
输入数组与若干区间查询,观察线段树维护区间和的树型结构与递归过程。
输入一系列 insert/find 操作,观察二叉搜索树的插入与查找路径。
输入 push/pop 操作序列,观察栈内元素变化。
用链表实现栈,push 在表头插入、pop 从表头删除,观察链式栈的演示过程。
输入 push/pop 操作序列,观察队列队首出、队尾入的过程。
两端都可入队、出队,输入 push_front/push_back/pop_front/pop_back 观察双端队列变化。
固定容量的循环数组实现队列,观察 head/tail 循环移动与 enqueue/dequeue 过程。
输入一系列插入/删除操作,观察单链表从表头到表尾的变化。
每个节点有前驱与后继指针,支持头尾插入删除,观察双向链表变化。
输入 push/pop 操作,观察大根堆的维护过程与堆内数组变化。
输入一系列 insert/find 操作,观察开放定址哈希表的冲突与探测过程。
输入合并/查询操作序列,观察并查集父数组与路径压缩过程。
输入数组,观察冒泡排序每一轮比较与交换的过程。
输入数组,观察每轮选择未排序部分最小值并交换的过程。
输入数组,观察每轮将当前元素插入已排序部分的过程。
输入数组,观察归并排序分治与合并过程的柱状图演示。
输入数组,观察快速排序划分与递归过程的柱状图演示。
输入非负整数数组(范围 0~K),观察计数、前缀和与按序放置的过程。
利用大根堆性质,建堆后反复取堆顶与末尾交换并下滤,观察堆排序过程。
插入排序的改进:按递减步长分组进行插入排序,观察每轮步长下的数组变化。
按位排序(从低位到高位),每轮用稳定排序按当前位排列,观察过程。
输入数组,观察单调栈求每个位置「左侧/右侧第一个更大」的过程。
在数组中逐个比较直到找到目标或遍历完,观察线性搜索的每一步比较。
输入有序数组和目标值,观察二分查找每一步的 left、mid、right 与比较结果。
在整数范围内二分答案,观察 check(mid) 与区间收缩过程(如求 floor(√n))。
输入底数 a、指数 n(及可选模数),观察二进制快速幂的每一步计算过程。
输入上界 n,观察埃拉托斯特尼筛法筛出 2~n 内所有质数的过程。
输入上界 n,观察欧拉线性筛用最小质因子筛质数的过程。
输入若干集合大小(及可选交集),观察容斥公式 |A∪B∪…| 的逐步展开与计算。
输入 a 与质数 p,求 a 在模 p 下的乘法逆元,观察费马小定理或扩欧过程。
输入 a、b,求 ax+by=gcd(a,b) 的一组整数解 (x,y),观察扩展欧几里得的递归过程。
输入 n、k 与质数 p,用预处理阶乘+逆元求 C(n,k) mod p,展示过程。
输入 2~3 组同余方程 x≡a_i (mod m_i),观察 CRT 求解过程与通解。
输入物品重量与价值、背包容量,观察 0/1 背包 DP 的填表过程与最大价值。
输入容量与多件物品(每件无限),观察完全背包 DP 的填表与最大价值。
输入容量与物品(重量、价值、件数上限),观察多重背包 DP 与最大价值。
输入序列,观察 LIS 的 O(n²) DP 填表过程与最长长度。
输入图(可选有向/无向)与起点,观察广度优先遍历的队列与访问顺序。
输入图(可选有向/无向)与起点,观察深度优先遍历的栈与访问顺序。
输入一个小图和起点终点,实验 Dijkstra 算法的每一步松弛过程和最短路径。
输入有向图边集,观察 Floyd 算法每轮对 dist 矩阵的松弛过程。
输入有向图与起点,观察每轮松弛过程,支持负权边与负环检测。
输入无向图边集,观察 Kruskal 按权排序、选边并查集合并的过程。
输入无向图边集,观察从起点扩展最小边的 Prim 过程。
输入有向无环图(DAG)边集,观察入度、队列与拓扑序列的生成过程。
输入链表 next 指针(或下标序列),观察 Floyd 龟兔赛跑算法检测环与找环起点。
输入无向图,用 BFS/DFS 染色判定是否为二分图,观察染色过程与冲突检测。
输入文本与模式串,观察 next 数组构建与匹配过程。
以斐波那契 fib(n) 为例,观察递归调用树与每一步返回值。