
算法
小冉同学
这个作者很懒,什么都没留下…
展开
-
数据结构中排序算法的实现
【代码】数据结构中排序算法的实现。原创 2022-10-21 22:02:19 · 349 阅读 · 1 评论 -
快速求一个数的约数
1.将一个数写成质因数的乘积2.然后将各质数的指数加一相乘就是该数的约数例如:24 = 2*2*2*3=2^3 * 3(3 + 1) * (1 + 1)= 8即24有8个约数6 = 2 * 3(1 + 1) * (1 + 1) = 4即6有4个约数:1,2,3,6原创 2020-11-11 21:04:35 · 6388 阅读 · 1 评论 -
背包问题模板代码
1.01背包有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。第 ii 件物品的体积是 vivi,价值是 wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有 NN 行,每行两个整数 vi,wivi,wi,用空格隔开,分别表示第 ii 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤1原创 2020-11-05 19:08:59 · 406 阅读 · 0 评论 -
记忆化DP—滑雪
例题:滑雪给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子: 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9在给定矩阵中原创 2020-11-05 17:28:11 · 219 阅读 · 0 评论 -
高精度加减乘除模板代码
1. 高精度加法例题:P1601 A+B Problem(高精)题目描述高精度加法,相当于a+b problem,不用考虑负数.输入格式分两行输入。a,b \leq 10^{500}a,b≤10500输出格式输出只有一行,代表a+ba+b的值输入输出样例输入11输出2输入10019099输出10100#include<iostream>#include<string>#include<...原创 2020-11-04 21:07:36 · 244 阅读 · 0 评论 -
并查集介绍及操作
并查集的操作:1. 将两个集合合并2. 询问两个元素是否在一个集合当中基本原理:每个集合以一颗数来表示,数的根节点即为整个集合的编号。每个节点存储它的父节点。p[x] 表示x 的父节点问题1:如何判断树根: if(p[x] == x)问题2:如何求x集合的编号: while(x != p[x]) x = px[x];问题3: 如何合并两个集合:px 是x的集合编号,py是y的集合编号。p[x] = y;例题:题目来源:洛谷 / 题目列表 / 题目详情 P3367 【模板】并查...原创 2020-10-29 16:29:49 · 224 阅读 · 0 评论 -
全排列【递归】和【next_permutation]两种写法
1.递归写法#include<iostream>#include<algorithm>using namespace std;int a[5] = { 1, 2, 3, 4, 5 }; void next(int k){ if(k == 5) { for(int i = 0; i < 5; i++) { printf("%d ", a[i]); } printf("\n"); return; } if(k &g原创 2020-10-13 09:40:12 · 149 阅读 · 0 评论 -
求两个数的最大公约数和最小公倍数
这里我先来回忆下小学的时候的求两个数的最大公倍数的方法:短除法短除法把上面的左边和最下边的乘起来就是48 和 36的最小公倍数:2 * 2 * 3 * 4 * 3 = 144。这就是短除法。仔细观察我们会发现,左边的乘积(2 * 2 * 3 = 12)其实就是48和36的最大公约数。则求最大公约数即:( a / gcd(a, b) ) * ( b / gcd(a, b) ) * gcd(a, b) 等价于 a * b / gcd( a, b )那么在编程中我们就可以利用欧几里得定..原创 2020-10-12 19:34:27 · 933 阅读 · 0 评论 -
计算某个具体的日期是星期几(基姆拉尔森计算公式)
公式:Week = (day + 2 * month + 3 * (month + 1)/ 5 + year + year / 4 - year / 100 + y / 400 ) % 7 + 1在公式中day表示日期中的日数,month表示月份数,year表示年数。注意:改公式同上一个公式需要把 1 月 和 2 月看成是上一年的 13 月和 14 四月。该公式具体怎么证明就不知道了,在某博客上学到的,对于初级选手来说比较实用。例:如果是2004-1-10则换算成:2003-13-10...原创 2020-09-05 11:08:43 · 1023 阅读 · 0 评论 -
基础算法例题(递归、分治......)
递归选择法排序 #include<iostream>#include<algorithm>using namespace std;void selectsort(int a[], int n, int i){ if (i == n - 1) return; else { int k = i; for (int j = i + 1; j < n; j++) { if (a[j] < a[k]) k = j; } if .原创 2020-07-18 10:14:36 · 244 阅读 · 0 评论