内容:判断质数持续更新# __author: _nbloser
# date: 2018/2/4import math
def is_prime(number):num_sqrt = int(math.sqrt(number))for i in range(2, num_sqrt + 1):if number % num_sqrt == 0:return Falsereturn Trueif__name__ == ‘__main__‘:n = int(input(‘输入要判断的数:‘))print(is_prime(n))判断质数# __author: _nbloser
# date: 2018/3/2### 求a^m mod n 。 返回的d为答案,比如 2^3 mod 5 = 3 ,则返回3def ...
1. 时间复杂度 时间复杂度是指程序运行从开始到结束所需要的时间。时间复杂度的计算一般比较麻烦,故在数据结构的研究中很少提及时间复杂度。为了便于比较同一个问题的不同算法,通常做法是,从算法中选取一种对于所研究的问题来说是基本操作的原操作,以该基本操作重复执行的次数做为算法的时间量度。基本操作应是其重复执行次数和算法时间成正比的原操作,多数情况下它是最深层循环内的语句中的操作。算法的执行次数还要随输...
二叉树的遍历 同类题型:1078笨办法直接建树:#include <cstdio>
#include <cstring>char str[105];struct Node {Node *lChild;Node *rChild;char d;
} Tree[105];
int pos;
int cur;Node* BuildTree(int e) {if (str[cur] == ‘#‘ || cur >= e) return NULL;Tree[pos].lChild = Tree[pos].rChild = NULL;Node* root = &Tree[pos++];root->d = str[cur];++cur;root->lChild = BuildTree(e);++cur;root->rChild = BuildTree(e);ret...
分治动态规划贪心回溯分支界定几大算法的适用范围对比 一、分治分治,就是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。分治法常常跟递归一起使用,借助递归,我们可以方便地将问题分解再将结果合并。分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;递归:若子问题规模较小而容易被解决则直接解,否则递归...
include<algorithm>1 sort(起始地址,结束地址+1,比较函数)作用:对连续存储的元素从起始地址到结束地址从小到大排序情况1:从大到小排序定义比较函数例子:bool cmp(int a,int b)
{return(a>b);
}情况2:结构体数组排序法1:重载运算符(定义在结构体内部)struct Edge{int no,w;//按w从小到大,w相同时按no从小到大 bool friend operator <(Edge a,Edge b){if(a.w==b.w) return a.no<b.no;return a.w<b.w;}
};法2:定义比较函数...
算法定义时间复杂度空间复杂度常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间...
1、给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?1) 可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。2) 遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中。这样每个小文件的大约为300M。3) 遍历文件b,采取和a相同的方式将url分别存储到1000个小文...
交换两个变量的值,古老的话题,下面把各种方法做个总结。为了方便,先定义两个变量。int a = 1;
int b = 2;一 借助临时变量1 交换变量值int tmp;
tmp = a; // tmp = 1
a = b; // a = 2
b = tmp; // b = 12 交换地址int *p;
p = &a; // tmp->1
a = &b; // a->2
b = p; // b ->1二 不借助第三个变量1 加减法a = a + b // a = 3
b = a - b // b = 1
a = a - b // a = 22 乘除法a = a * b // 2
b = a / b // 2
a = a / b // 13...
一、遍历函数1.for_each遍历函数#include<iostream>
usingnamespace std;
#include<algorithm>
#include<vector>//for_each遍历函数//普通函数void pri(int val)
{cout << val << "";
}class myprint
{
public:voidoperator()(int val1){cout << val1 << "";}
};int main(void)
{vector<int> v;for (int i = 0; i < 10; i++)v.push_back(i);for_each(v.begin(), v.end(), pri);cout <<endl<< "-----------------------------" << e...
1、递归与分治递归算法:直接或者间接不断反复调用自身来达到解决问题的方法。这就要求原始问题可以分解成相同问题的子问题。示例:阶乘、斐波纳契数列、汉诺塔问题斐波纳契数列:又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F1=1,F2=1,Fn=F(n-1)+F(n-2)(n>2,n∈N*))。分治算法:待解决复杂的问题能够简化为几个若干个小规模相同的问题,然后逐...
什么是算法 就是一个计算的过程,解决问题的方法用到知识点 递归 调用自身 有结束条件 下次执行相应的复杂度要减少 时间复杂度排序(按效率排序) O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)判断时间复杂度 1.循环减半的过程就是O(logn) 2.几次循环就是n的几次方的复杂度空间复杂度(以空间换时间) 评估算法内存占用大小 列表查找 顺序查找 从列表第一个元素开始,顺序进...
整数线性规划求解----分枝定界法什么是整数规划?? 线性规划中的变量(部分或全部)限制为整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。目前所流行的求解整数规划的方法,往往只适用于整数线性规划。目前还没有一种方法能有效地求解一切整数规划。整数规划的分类 - 变量全限制为整数时,称(完全)整数规划- 变量部分限制为整数时,称混合整数规划 什么是分枝定界法? 原理如下:? 设...
线段树最好的宝石题目:单值修改,区间查询,维护信息:最大值和最大值的个数题目描述
牛牛有n个宝石,第i个宝石的价值是w[i].
有m个操作,操作分为两种类型
? Change x y 把第x个宝石的价值改成 y
? Ask l r 询问区间[l,r]内宝石的最大价值,和最大价值的宝石有多少个。
输入描述:
第一行两个整数 n , m (1 ≤ n,m ≤ 2e5)
第二行有n个整数 w[i] (0 ≤ w[i] ≤ 1e9)
接下来m行,每行代表一个操作。具体见题目...
一、基本描述类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。(1)分支搜索算法所谓“分支”就是采用广度优先的策略,依次搜索E-结点的所有分支,也就是所有相邻...
现在的很多游戏中的地图一般采用格子的方式,虽然在表面地图上无法看到实际的格子,但是在地图的结构中专门有一个逻辑层,这个层和地图大小相等,划出很多小的格子,然后在可以通过的地方使用0表示,在有障碍的且不能通过的地方用1或者其他数字表示(如图所示)。有了这个逻辑层之后,实际上自动寻路就转换成了如何在一个二维数组中找出一条从逻辑值为0的地点移动到目标的路径。在寻路之前,我们首先要随机生成这些地图。 ...