算法
Gxysbra
这个作者很懒,什么都没留下…
展开
-
C++ 实现排列组合
说明该文章只为自己记录学习用参考极客时间程序员的数学基础课第7、8讲排列代码实现#include <iostream>#include <vector>using namespace std;template <typename T>class Permutation{public: typedef vector<T> Sequence; typedef vector<bool> BitMap;p原创 2020-10-21 16:43:06 · 2390 阅读 · 2 评论 -
C++ 实现数学归纳法证明过程
数学归纳法证明一般步骤证明基本情况(通常是 n = 1的时候)是否成立;假设 n = k - 1 成立,在证明 n = k 时也是成立的(k 为任意大于1的自然数)。参考极客时间程序员的数学基础课专栏第四讲代码实现头文件:mathematical_induction.hpp#ifndef MATHEMATICAL_INDUCTION_H#define MATHEMATICAL_INDUCTION_H/** * @description 数学归纳法证明 * @param St原创 2020-10-19 11:00:54 · 487 阅读 · 0 评论 -
C++ 利用二分法求整数平方根
利用二分法求整数的平方根例如求10的平方根,则在1 ~ 10间利用二分法判断(1 + 10) / 2 = 5.5的平方是否大于或小于10,如果5.5的平方大于10,则在1 ~ 5.5之间继续二分查找;如果5.5的平方小于10,则在5.5 ~ 10之间继续二分查找;如果5.5的平方等于10,则找到10的平方根。代码实现#include <iostream>#include <math.h>using namespace std;// 指定精度与迭代次数double s原创 2020-10-18 19:40:15 · 2108 阅读 · 1 评论 -
C++ 大整数类(无符号BigInteger类和带符号SignedBigInteger类)实现
C++ BigInteger类实现,存储任意大小的非负整数参考算法竞赛入门经典第二版 5.3 节——大整数类代码(先放代码,后续追加注释与可以为负数的实现)#include <string>#include <vector>#include <algorithm>#include <iostream>using namespace std;/** * 存储任意大小的非负整数 */class BigInteger{ fr原创 2020-10-17 12:09:45 · 3270 阅读 · 1 评论 -
拓扑排序——插件加载顺序
拓扑排序问题描述有如下插件间依赖关系:插件1依赖于插件0插件2依赖于插件0插件3依赖于插件0插件4依赖于插件1插件5依赖于插件1插件6依赖于插件2和插件3插件7依赖于插件2和插件5求一种插件加载队列,使得被依赖插件先于依赖插件加载。解决方案利用拓扑排序,根据插件间的两两依赖关系,得出合适的插件加载顺序。将插件看作节点,插件间的依赖关系看作两个插件节点之间的有向边,如插件A依赖于插件B,则有一条从B到A的有向边。据此,可得到一幅有向图。由上述问题,可得有向图如下所示:首先找出原创 2020-09-16 21:36:13 · 750 阅读 · 0 评论 -
序列中的所有子序列
序列中的所有子序列题目对于一个序列,如{1, 2, 3, 4, 5},求其所有子序列,如{1}、{1, 2}、{1, 3, 5}等等。解法对于一个长度为n的序列,其所有子序列的个数为2^n - 1,规模呈指数级增长,所以在此探讨长度不大于32的序列。因此,可以采用位图的方法来解决该问题,利用int型变量作为位图。如上题中,可以用10000来表示取{1},用11000来表示取{1, 2},用{10101}来表示取{1, 3, 5}。因此,00001~11111之间的数表示原序列的一个子序列,故而可以原创 2020-09-14 22:54:13 · 3404 阅读 · 0 评论