算法考点总结
基础算法:
排序算法
冒泡排序 简单效率低 适合小规模数据
选择排序 每次选择未排序部分的最小值 交换到已排序部分的末尾
快速排序 高效的递归排序算法,通过基准值划分数据
归并排序 稳定的分治排序算法,数组分解为子数组排序后合并
查找算法
二分查找
哈希表 使用哈希函数快速查找元素
算法常用的...
完美数
include
#include <vector>
using namespace std;
// 计算正整数x的真因数之和
int sum_proper_divisors(int x) {
if (x == 1) return 0; // 1没有真因数
i...
数论 因数遍历
include
#include <vector>
#include <algorithm> // 用于排序
using namespace std;
vector<long long> get_factors(long long n) {
...
局部搜索算法
局部搜索算法是解决优化问题的一类启发式方法,尤其适用于组合优化和NP难问题。其核心思想是从一个初始解出发,通过逐步调整当前解的邻域状态,寻找更优解或近似最优解。
一、核心思想与特点
1. 邻域动作
通过定义邻域操作(如交换、翻转、插入等)生成新解。例如,在旅行商问题中,2-opt操作通...
岛屿数量统计
```cpp 题目描述
给定一个二维字符数组 grid ,其中包含 '1' (陆地)和 '0' (水),计算岛屿的数量。岛屿被水包围,并且通过水平或垂直方向上相邻的陆地连接而成。你可以假设网格的四个边均被水包围。
示例 1:
plaintext
输入:grid = [ ["1","1...
大整数幂运算_高精度运算
大整数幂运算
题目描述
给定两个正整数 a 和 n , a 的范围是 1=< a <=10^100, n 的范围是 1 =< n<= 100。计算 a^n 的结果并输出。由于结果可能非常大,需要使用高精度计算。
输入格式
第一行输入一个字符串,表示大整数 a...
拯救小p_广度优先搜索算法
拯救小P
题目描述
在一个 N×M ( 1 ≤ N, M ≤ 100 )的迷宫里,小P被困在了迷宫的某个位置。迷宫由空地(用 0 表示)和墙壁(用 1 表示)组成。小P可以在1个单位时间内从当前位置移动到上下左右四个相邻的空地上。迷宫的左上角坐标为 (0, 0) ,右下角坐标为 ...
迷宫探索
迷宫探索
题目描述
给定一个 n * m 的迷宫,迷宫由 0 和 1 组成,其中 0 表示通路, 1 表示墙壁无法通过。你从迷宫的左上角 (0, 0) 出发,每次只能向上下左右四个方向移动一步,且不能走出迷宫边界,问是否能到达右下角 (n - 1, m - 1) 。
...产生数
[NOIP2002 普及组] 产生数
题目描述
给出一个整数n和k个变换规则。
规则: - 一位数可变换成另一个一位数。 - 规则的右部不能为零。
例如:n=234,k=2。有以下两个规则:
- 2------>5。
- 3------>6。
上面的整数 $234$ 经过变换后可...