自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_35710556的博客

滴水穿石。。。。。

  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

原创 冒泡排序,快速排序,堆排序,归并排序

1.冒泡排序(1)基本思想:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(最小)的数据元素交换到了无序序列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于:每次通过两两比较交换位置。选出剩余无序序列里最大(最小)的数据元素放到队尾。(2)C++实现代码:#include<stdio.h>void bubble_sor...

2018-06-06 21:24:20 2218

原创 HASH表(拉链法和数组)

hash表(拉链法):主要针对关键字是字符串,将字符串hash到链表数组#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct node{ char *name; char *desc; struct node *next;}node;#define...

2018-06-05 23:33:46 474

原创 常用字符串Hash函数

几个常用的字符串Hash函数如下:SDBMHash函数unsigned int SDBMHash(char *str) { unsigned int hash = 0; while (*str) { // equivalent to: hash = 65599*hash + (*str++); hash = (...

2018-05-28 23:24:30 270

原创 关于C/C++中的NULL和C++11新引进的nullptr

C/C++使用NULL来表示空指针,它是一个宏定义,其实质就是0,表示不指向任何内存地址的空指针。VC中的NULL定义在vcruntime.h中。#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif#endif在C++中NUL...

2018-05-26 18:06:44 631

原创 数据结构之:AVL树详解及C++模板实现

AVL树简介AVL树的名字来源于它的发明作者G.M. Adelson-Velsky 和 E.M. Landis。AVL树是最先发明的自平衡二叉查找树(Self-Balancing Binary Search Tree,简称平衡二叉树)。一棵AVL树有如下必要条件:条件一:它必须是二叉查找树。条件二:每个节点的左子树和右子树的高度差至多为1。图一中左边二叉树的节点45的左孩子46比45大,不满足二叉...

2018-05-26 16:12:50 412

原创 使用近似公式计算e的值

e=1+1/1!+1/2!+1/3!+…+1/n!+…,使答案与标准答案误差小于1e-5代码如下:#include<bits/stdc++.h>using namespace std;int main(){ int i; double e,t; for(e=t=i=1;t>1.0e-5;e+=t/=i++); printf("e ≈ %g\n...

2018-04-22 18:31:25 9990

原创 博弈论(巴什博奕,威佐夫博弈,尼姆博奕,斐波那契额博弈)

一.巴什博奕(bash game)只有一堆n个物品,两个人轮流从中取物,规定每次最少取一个,最多取m个,最后取光者为胜。如果n%(m+1)==0,后手必胜,反之,先手必胜。代码如下:#include<bits/stdc++.h>using namespace std;int main(){ int n,m; while(cin>>n>>m)...

2018-04-22 17:54:16 358

原创 Floyd算法求图最小环

观光旅游Time Limit:1000MS  Memory Limit:65536K Total Submit:1 Accepted:0Description背景 Background   湖南师大附中成为百年名校之后,每年要接待大批的游客前来参观。学校认为大力发展旅游业,可以带来一笔可观的收入。 描述 Description   学校里面有N个景点。两个景点之间可能直接有道路相连,用Dist[I...

2018-04-15 06:00:12 945

原创 随机数rand()srand()

一、rand()函数名:   rand  功   能:   随机数发生器用   法:   int rand(void); 所在头文件: stdlib.h函数说明 :rand()返回一随机数值的范围在0至RAND_MAX 间。如果求a~b之间的随机数,有两种方法:(1)a+(int)b*rand()/(RAND_MAX+1)(2)rand()%(b-a+1)+a二.s

2018-04-13 17:41:13 193

原创 字符串与数字相互转化

一.C中的方法1.  c中字符串转换成数字:一些库函数头文件:#include<stdlib.h>atof(),atoi(),atol(),atoll(),strtod(),strtol(),strtoul(),strtof(),strtoll(),strtoull().(1)strtol()(将字符串转换成长整型数)定义函数 long int strtol(const char *n...

2018-04-07 10:50:07 6963 1

原创 fgets用法

fgets()从文件或者流中获取字符串。stdin是标准输入流示例1:char strBuf[1024];fgets(strBuf, sizeof(strBuf), stdin); //处理strBuf示例2:FILE* fp = fopen("some_file.txt", "r");if(fp){    char strBuf[1024];    fgets(strBuf, sizeof(st...

2018-04-03 15:03:41 3498

原创 c++string详解

string作为一个类出现,它集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要,我们可以用=进行赋值操作,==进行比较,+做连接。可以把他看成c++基本数据类型。1.头文件#include<string>2声明一个c++字符串:string str;string类的构造函数和析构函数如下:(a)string s;生成一个空字符串(b)string s(str)拷贝构造函数...

2018-04-02 21:13:37 386

原创 拓扑排序toposort

1、拓扑排序的介绍对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。拓扑排序对应施工的流程图具有特别重要的作用,它可以决定哪些子工程必须要先执行,哪些子工程要在某些工程执行后才可以执行。为了形象地反映出整个工程中各个子工程(活动)之间的先后关...

2018-03-24 22:00:34 414 1

原创 最小生成树(Kruskal和Prim算法)

连通图:无向图中,任意两个顶点都有路径相通,称该无向图为连通图。强连通图:有向图中,任意两个顶点都有路径相通,称该有向图为强连通图。连通网:连通图的每条边对应一个数,称为权,称这种连通图叫做连通网。生成树:连通图的一个连通子图,它含有全部n个顶点,但只有足以构成树的n-1条边。最小生成树:连通网中的所有生成树中,边的代价和最小的生成树。Prim算法:也称为‘加点法’,每次迭代选择代价最小的边对应的...

2018-03-24 19:30:36 181

原创 素数筛选法

素数:指在大于1的自然数中,只能被1和它本身整除的自然数。1.朴素的筛选法bool isprime(int n){ if(n<=1) return false; if(n==2) return true; for(int i=2;i<=sqrt(n);i++){ if(n%i==0) return false; } re...

2018-03-23 15:50:58 138

原创 图的五种最短路径算法

本文总结了图的几种最短路径算法的实现:深度或广度优先搜索算法,费罗伊德算法,迪杰斯特拉算法,Bellman-Ford 算法。1)深度或广度优先搜索算法(解决单源最短路径)从起点开始访问所有深度遍历路径或广度优先路径,则到达终点节点的路径有多条,取其中路径权值最短的一条则为最短路径。下面是核心代码:void dfs(int cur,int dst){ if(minpath<dst) r...

2018-03-17 17:02:49 74890 6

原创 cin.getline,getline,gets 的区别个

cin.getline:此函数一次读取多个字符(包括空白字符),直到读满N-1个,或者遇到指定的结束符为止(默认是以'\n'结束)。其语法为:cin.getline(字符指针(char*),字符个数N(int),结束符(char));#include<bits/stdc++.h>using namespace std;int main (){ char a[10]; ...

2018-03-16 15:42:15 819

原创 图的深度优先遍历和广度优先遍历

#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<cstdlib>#include<queue>using namespace std;#define maxva

2018-03-12 10:29:35 187

原创 图的构建(邻接表法)

#include<iostream>#include<stdio.h>#include<algorithm>#include<stdlib.h>#include<math.h>#include<malloc.h>#include<string.h>using namespace std;#defin

2018-03-07 18:22:36 652 1

原创 10 c语言中整型int,long,long long范围及原码补码表示

 以2字节为例来说:对于无符号的数值(原码及补码都一样),最小值是0,最大值是1111  1111  1111  1111=216-1=65535,共有216个编码。对于有符号的来说较为复杂:1)原码表示最大值:0111  1111  1111  1111=215-1=32767最小值:1111  1111  1111  1111=-(215-1)=-32767正0和负0:000000000000...

2018-03-04 19:50:15 1329

原创 9.1 poj3125 Printer Queue

题目链接:http://poj.org/problem?id=3125题意:给出一串打印的优先级,如果打印当前点i但是后面有比他优先级高的,那么将i点放到最后。如果后面没有比当前点优先级高的,则打印。已知打印耗时1,移动是瞬时完成的。求打印p时的时间。思路:使用队列queue模拟,直接按照题意进行模拟。#include<cstdio>#include<cstring>#...

2018-02-12 20:09:27 117

原创 memset初始化机构体struct

memset可以方便的清空一个结构体类型的变量或者数组如:struct sample_struct{ char csname[16]; int iseq; int itype;};对于变量struct sample_struct sttest;一般情况下,清空sttest的方法:sttest.csname[0]='\0';sttest.iseq=0;stte...

2018-02-12 19:24:51 914

原创 8 构造法

构造法是指解决某些数学问题使用通常方法按照定向思维难以解决问题时,应根据题设和结论的特性,性质,从新的角度,新的观点去观察,分析,理解对象,牢牢抓住反映问题的条件和结论之间的内在联系,运用问题的数据,外形,坐标等特性,使用问题中的已知条件为原材料,运用一直数学关系式和理论为工具,在思维中构造出满足条件与结论的数学对象,从而,使原问题中隐含的关系和性质在新构造的数学对象中清晰的展现出来,并借助该数学...

2018-02-12 14:25:28 314

原创 7 递推

递推算法:即通过已知条件,利用特定关系得出中间推论,直到得到结果的算法。地推算法分为顺推和逆推两种。顺推法:所谓顺推法是从已知条件出发,逐步推算出要解决的问题。如斐波那契数列,设他的函数为f(n),已知f(1)=1,f(2)=1;f(n)=f(n-2)+f(n-1)(n>=3),则我们通过顺推可以知道f(3)=f(1)+f(2)=2,f(4)=f(2)+f(3)=3……直至我们要求得解。逆推...

2018-02-12 14:25:08 364

原创 6.1 poj 3070 Fibonacci

题目链接:http://poj.org/problem?id=3070题意:求斐波那契数列Fn的值的后四位数,(0<=n<=1000,000,000)思路:由于n很大,o(n)会超时,所以使用矩阵快速幂,时间复杂度降为o(logn)。#include<cstdio>#include<cmath>#include<cstdlib>#include...

2018-02-12 14:24:56 121

原创 6 矩阵快速幂

矩阵快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度降到o(logn)。若A是一个矩阵,那么求A的n次方的过程就是矩阵快速幂。现在要求A^156,而156(10)=10011100(2)也就有A^156=(A^4)*(A^8)*(A^16)*(A^128)核心代码:#include<cstdio>#include<cmath>#include<c...

2018-02-12 14:24:41 111

原创 5.1 HDOJ 1061--Rightmost Digit

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1061题意:题目的意思已经非常明确了,就是求n^n的个位数,求他的个位数就相当于进行mod10运算,这里就直接用快速幂算法,就可以得出结果,题目给定的n可能比较大,所以用long long 比较保险。#include<iostream>#include<cstdio>usin...

2018-02-12 14:24:12 160

原创 5 乘方取模问题

二分思想:a^n%m=(a^(n/2))^2%m     n为偶数   (a^(n/2))^2%m*(a%m)   n为奇数注:把时间复杂度从o(n)降为o(logn)了//m^n%k模板int binary_pow(int m,int n,int k){ if(n==1) return m%k; else if(n%2==0){ int b=binary_p...

2018-02-12 14:23:56 267

原创 4 递归和分治

分治是基于多分枝递归的一种算法。简单的说就是把一个大问题分解为多个类型相同的子问题,最后把这些子问题的解合并起来就是问题的解。我们看一下典型的递归和分治算法。问题1:插入排序的递归算法思路:1.首先找到突破点——如果有n个数,前面n-1个都已排序,那么我只要把最后一个数插入到正确的位置即可。那如何让前n-1个都已排序,如果前n-2个都已排序就好了……一直到第一个已排序,明显的第一个肯定是已排序的,...

2018-02-12 14:23:44 208

原创 3.1 poj2109 Power of Cryptography

题目链接:http://poj.org/problem?id=2109题意分析:有指数函数 k^n=p,其中k,n,p均为整数且1<=k<=10^9,1<=n<=200,1<=p<=10^101给定n和p,求底数k解题思路:float的范围是-2^128~2^128也即-3.40e+38~3.40e+38;double的范围是-2^1024~2^1024也即-1...

2018-02-12 14:22:32 104

原创 3 float和double的取值范围和精度

float是32位,double是64位float 32位中,有1位符号位,8位指数位,23位尾数位。double 64位中,有1位符号位,11位指数位,52位尾数位取值范围看指数部分:float:8为指数位,(-2^7~2^7-1)=(-128~127)float取值范围:-2^127~2^127 也即 -1.70e+38~+1.70e+38double:11位指数位,(-2^10~2^10-1...

2018-02-12 14:22:15 456

原创 2.2 POJ2586-Y2K Accounting Bug

题目链接:http://poj.org/problem?id=2586题意分析:已知一个公司在某一年中,每个月要么固定盈利s,要么亏损d。但是具体哪个月盈利,哪个月亏损却不得而知。不过可以肯定的是,这一年中,任意连续5个月必定亏损,问这年是否存在盈利的可能,若可能盈利,最大的盈利额是多少?解题思路:贪心——要求全年最大盈利和,最理想的情况是每月都盈利,即12s,但是要保证任意连续5个月必定亏损,因...

2018-02-12 14:21:22 112

原创 2.1 poj1328 Radar Installation

题目链接:http://poj.org/problem?id=1328题意:地图的x轴的上方为海,下方为陆地,海中有n个小岛,坐标为(node[i].x,node[i].y)。有一种雷达,能探测到的范围为以d为半径的圆。问海岸线上至少造多少雷达可以把所有的小岛都包含在内。注意雷达是建在海岸线上的,也就是x轴上的。思路:贪心。从左到右建立雷达,要尽量多地覆盖岛屿。以岛屿为圆心,以d为半径画圆,如果画...

2018-02-12 14:21:10 127

原创 2.贪心

贪心算法的定义:贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优加以考虑,只做出某种意义上的局部最优解。当然,希望贪心算法得到的结果也是整体最优的。如单源最短路问题,最小生成树问题等。贪心算法的思路:1.建立数学模型来描述问题。2.把求解的问题分成若干个子问题。3.对每个子问题求解,得到每个子问题的局部最优解。4.把每个子问题的局部最优解合并为原问题的一个最优解贪...

2018-02-12 14:20:54 115

原创 1.2 POJ 2965 The Pilots Brothers' refrigerator

题目链接:http://poj.org/problem?id=2965题意:就是把题目中给出的状态图,全部翻转成----------------状态翻转: 每次翻转一个,那么它所在的行和列都要翻转问最小翻转次数,同时输出翻转路径.算法:暴力 + 枚举 + dfs回溯思路:可以证明每个把手要么翻转,要么不翻转,那么从左到右,从上到下依次枚举每个把手,同时深搜一遍即可。和前面的棋盘翻转一样.#incl...

2018-02-12 14:20:18 123

原创 1.1poj1753 Flip Game

题目链接http://poj.org/problem?id=1753题意:给出一个4*4方格,b表示黑棋,w表示白棋,每选定一个棋子,将其以及其相邻点翻转,需要多少次才能使棋子全为白色或者黑色?思路:每次棋子最多只需要翻转1次(翻转偶数次和不翻转一样,翻转基数次和翻转1次结果一样)最多有2^16个不同的状态,dfs枚举+回溯#include<iostream>#include<...

2018-02-12 14:19:57 123

原创 1 枚举

枚举算法的思想是:将问题的答案一一列举,根据条件判断答案是否合适,保留合适的答案,舍弃不合适的答案。枚举算法一般用while和for循环实现。形如:while/for(.....){ if(){} else{} }...

2018-02-12 14:19:21 110

原创 8.1 poj 3295 Tautology

题目链接:http://poj.org/problem?id=3295算法:构造法题意:输入由p,q,r,s,t,K,A,N,C,E共10个字母组成的逻辑表达式,其中p,q,r,s,t的值为1(true)或0(false),即逻辑变量;K,A,N,C,E为逻辑运算符。K--> and: x & y 或者x && yA--> or: x | y或者x | | yN...

2018-02-12 14:19:05 129

原创 9. 模拟算法

定义:所谓模拟,即使程序完整的按题目所叙述的方式运行,最终得出答案。模拟的方法:模拟算法也就是将整个过程完完整整的走一遍。题目怎么叙述的,程序就怎么运行。所以模拟题对算法设计的要求不高,但是需要大家选择最适当的数据结构来进行模拟。...

2018-02-12 14:14:15 220

原创 C++ STL--stack/queue 的使用方法

1、stackstack 模板类的定义在头文件中。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stack 对象的示例代码如下:stack s1;stack s2;stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是

2016-09-19 12:59:01 168

标准字符串函数和正则表达式

标准字符串函数和正则表达式

2018-03-22

pickle与struct模块简介

pickle与struct模块简介

2018-03-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除