
算法与数据结构
总结
晚风吻尽荷叶
道阻且长,行且将至。
展开
-
全排列总结(二)
一、n个数全排列#include <iostream>#include <string>#include <algorithm>#include <cstdio>using namespace std;int flag[200], a[200];int n = 5;void dfs(int step){ if (step - 1 == m) { for (int i = 0; i < step; i+原创 2020-10-10 01:47:54 · 207 阅读 · 0 评论 -
二进制枚举-练习
目录一、NEFU_OJ 1172,异或的应用二、NEFU_OJ 1205,二进制枚举模板题三、NEFU_OJ 1505四、NEFU_OJ 1518五、NEFU_OJ 1641六、NEFU_OJ 1285一、NEFU_OJ 1172,异或的应用异或,英文为exclusive OR,缩写成xor异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两..转载 2020-08-04 17:35:45 · 367 阅读 · 0 评论 -
背包问题-练习题
有n件物品(每种物品都只有一件),w[i]表示物品的重量,v[i]表示物品的价值,现有一个容量为V的背包,应该如何选物品使得书包内装的物品的value之和最大呢?解法:二维数组:时间复杂度和空间复杂度都是O(n*V)对于第i个物品,有选和不选两种情况dp[i][j]表示在容量为j的情况下选取i个物品的最大value值核心代码:for(i=0;i<n;i++)for(j=V;j>=w[i];j--)dp[i][j]=max(dp[i-1][j],dp[i-1.原创 2020-08-07 22:19:12 · 7169 阅读 · 2 评论 -
素数打表法
#include <bits/stdc++.h>using namespace std;const int MAX_NUM = 1000000;int isPrime[MAX_NUM];bool _prime(){ for (int i = 2; i <= MAX_NUM; i++) isPrime[i] = 1; for (int i = 2; i <= MAX_NUM; i++) { if (isPrime[i].原创 2020-08-05 23:50:36 · 167 阅读 · 0 评论 -
最小生成树-模板
一、prim算法学习于:https://blog.youkuaiyun.com/yeruby/article/details/38615045第一行输入m、n,代表m个城市,n条路线;随后n行,每行输出a、b、c,代表a到b的距离为c;输出把这些城市连接起来需要的最短距离,并输出路径。6 10 1 2 6 1 3 1 1 4 5 2 3 5 2 5 3 3 4 53 5 6 3 6 4 4 6 2 5 6 6#include <algorithm..原创 2020-07-28 22:53:47 · 192 阅读 · 0 评论 -
蓝桥杯-通电 (最小生成树)
最小生成树的模板题,没有oj,也不知道能得多少分,可能会有一些小错误。题目:通电【问题描述】2015年,全中国实现了户户通电。作为一名电力建设者,小明正在帮助一带一路上的国家通电。这一次,小明要帮助 n 个村庄通电,其中 1 号村庄正好可以建立一个发电站,所发的电足够所有村庄使用。现在,这 n 个村庄之间都没有电线相连,小明主要要做的是架设电线连接这些村庄,使得所有村庄都直接或间接的与发电站相通。小明测量了所有村庄的位置(坐标)和高度,如果要连接两个村庄,小明需要花费两个村庄之间的坐标原创 2020-07-28 22:52:10 · 837 阅读 · 2 评论 -
count()与count_if()
语法:#include <algorithm>//1) count( InputItIterator first, InputItIterator last, const T &value );//2) count_if (InputIterator first, InputIterator last, UnaryPredicate pred);(1)计数等于 value 的元素。(2)按条件统计元素个数,返回范围内满足条件的元素数,(即计数谓词 pred 对其..原创 2020-07-28 15:42:33 · 360 阅读 · 0 评论 -
快速幂 小结
一、递归#include <iostream>using namespace std;int quickPow(int base, int k){ if (k == 1) return base; int ans = quickPow(base, k >> 1); ans *= ans; if (k & 1) ans = ans * base; return ans;}int mai原创 2020-07-25 22:11:50 · 147 阅读 · 0 评论 -
C语言求最小公倍数和最大公约数三种算法
求最小公倍数算法:最小公倍数=两整数的乘积÷最大公约数求最大公约数算法:(1)辗转相除法有两整数a和b:① a%b得余数c② 若c=0,则b即为两数的最大公约数③ 若c≠0,则a=b,b=c,再回去执行①例如求27和15的最大公约数过程为: 27÷15 余12 15÷12余3 12÷3余0 因此,3即为最大公约数#include <stdio.h>int main() /* 辗转相除法求最大公约数 */{ in...转载 2020-07-24 16:43:52 · 9599 阅读 · 0 评论 -
sort排序
函数原形:sort(first_pointer,first_pointer+n,cmp)该函数可以给数组,或者链表list、向量排序。实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据你的数据形式和数据量自动选择合适的排序方法,这并不是说它每次排序只选择一种方法,它是在一次完整排序中不同的情况选用不同方法,比如给一个数据量...原创 2019-12-27 17:39:18 · 4683 阅读 · 0 评论 -
全排列的几种方法
文章目录1. dfs搜索法2. 递归回溯法3. 字典序法4. 用stack模拟字典序①java版②c++版5. next_permutation()法本文参考的博客1. dfs搜索法#include <iostream>#include <string>#include <algorithm>#include <cstdio>using namespace std;int flag[200], m, t[200];void dfs(int st原创 2020-07-19 23:47:32 · 402 阅读 · 0 评论 -
二叉树知识点总结
二叉树知识点总结一、二叉树的建立#include <iostream> #include <queue>using namespace std;string str;struct node{ int data; node *left,*right;};node* creat(int i){ if(str[i] == '.'||i > str.size()) { return NULL; } node *root = new node;原创 2020-07-22 21:18:46 · 656 阅读 · 0 评论