31 行代码C++算法模板
二维矩阵 DFS 搜索模板
DFS 搜索二维矩阵中从 (1, 1) 到 (n, m) 的路线数量
#include <bits/stdc++.h>
using namespace std;
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
#dfs
DFS 搜索二维矩阵中从 (1, 1) 到 (n, m) 的路线数量
#include <bits/stdc++.h>
using namespace std;
int dx[] = {-1, 1, 0, 0};
int dy[] = {0, 0, -1, 1};
计算 a 的 b 次幂对 m 取模的结果,时间复杂度 O(log b)
using ll = long long;
ll quick_pow(ll a, ll b, ll m) {
ll ans = 1 % m;
ll w = a;
while (b) {
if (b % 2 == 1) ans = ans * w % m;1-based 下标的冒泡排序,时间复杂度 O(n²),空间 O(1),稳定
// 升序,数组下标从 1 开始,有效范围为 a[1] ~ a[n]
void bubble_sort(int a[], int n) {
for (int i = 1; i < n; i++) {
bool flag = true;
for (int j = 1; j <= n - i; j++)
if (a[j] > a[j + 1]) {1-based 下标的插入排序,时间复杂度 O(n²),空间 O(1),稳定
// 升序,数组下标从 1 开始,有效范围为 a[1] ~ a[n]
// 1. 后移法
void insert_sort1(int a[], int n) {
for (int i = 2; i <= n; i++) {
int key = a[i];1-based 下标的选择排序,时间复杂度 O(n²),空间 O(1),不稳定
// 升序,数组下标从 1 开始,有效范围为 a[1] ~ a[n]
void select_sort(int a[], int n) {
for (int i = 1; i < n; i++){
int idx = i;
for (int j = i+1; j <= n; j++) {
if (a[j] < a[idx])简单的质数判定代码,时间复杂度 O(sqrt(x))
bool is_prime(int x) {
if (x < 2) return false;
for (int i = 2; i*i <= x; i++)
if (x % i == 0)
return false;
return true;