自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王小东大将军的博客

读书学习笔记+温故知新

  • 博客(41)
  • 资源 (3)
  • 收藏
  • 关注

原创 擒贼先擒王-并查集

并查集通过一个一维数组来实现,其本质是维护一个森林。刚开始时候,森林的每个点都是孤立的,也可以理解为每个点就是一颗只有一个结点的树,之后通过一些条件,逐渐将这些树合并为一颗大树。其实合并的过程就是认爹的过程。在认爹的过程中,要遵守“靠左”原则和“擒贼先擒王”原则。 在每次判断两个结点是否已经在同一颗树中的时候(一棵树其实就是一个集合),也要注意必须求其根源,中间父亲结点(小BOSS)是不能说明

2017-04-22 18:57:58 505

原创 堆-神奇的优先队列

如何建立堆?1)从空的堆开始,然后依次往堆中插入一个元素,直到所有的数都被插入(转移到堆中)为止。因为插入第i个元素所用的时间是O(logi),所以插入所有元素的整体时间复杂度是O(NlogN),代码如下:n=0;for(i=1;in++;h[n]=a[i];siftup(n);} 2)把n个元素建立一个堆,首先将这n个节点以自顶向下,从左到右方式从1到

2017-04-22 18:54:43 311

原创 Bellman-Ford的队列优化

Bellman-Ford的队列优化思想:每次仅对最短路程发生变化了的点的相邻边执行松弛操作。如何知道当前哪些点的最短路程发生变化?此处可以用一个队列来维护这些点、举例来说明 5 7 //第一行2个整数n、m,n为顶点个数,m为边的个数。接下来m行,每行3个数x、y、z,表示顶点x到顶点y//的边权值为z 1 2 21 5 102 3 32 5 7

2017-04-22 18:49:01 386 2

原创 最短路径之Bellman-Ford算法----解决负权边

最短路径之Bellman-Ford算法----解决负权边 //核心代码,只有4行,可以解决带有负权边的图。  for(k=1;k //最多包含n-1条边 for(i=1;i<=m;i++) //内循环循环了m次(m为边的个数),即枚举每一条边 if(dis[v[i]] > dis[u[i]+w[i]]) dis[v[i]] = dis[u[i]+w[i

2017-04-22 18:46:55 641

原创 最短路径之Dijkstra算法

最短路径之Dijkstra算法//求1号顶点到其余各个顶点的最短路径 //但是注意,此方法不能解决带有“负权”的图 #includeint main() { int e[10][10],dis[10],book[10],k,i,j,n,m,t1,t2,t3,u,v,min; int inf=99999999; //正无穷定义为99999999 (int可以存储最大

2017-04-22 18:40:40 503

原创 最短路径之Floyed-Warshall算法

最短路径之-Floyed-Warshall算法//使用Floyed-Warshall能够求两点之间最短路径 或者指定一个点到其余各个顶点的最短路径//但是注意,此方法不能解决“负权回路”的图 #includeint main() { int e[10][10],k,i,j,n,m,t1,t2,t3; int inf=99999999; //正无穷定义为9999

2017-04-22 18:37:20 562

原创 最短路径

最短路径之-Floyed-Warshall算法//使用Floyed-Warshall能够求两点之间最短路径 或者指定一个点到其余各个顶点的最短路径//但是注意,此方法不能解决“负权回路”的图 #includeint main() { int e[10][10],k,i,j,n,m,t1,t2,t3; int inf=99999999; //正无穷定义为999999

2017-04-22 18:36:46 244

原创 DFS/BFS解决宝岛探险

DFS宝岛探险思路:注意此处我们把与小哼降落点上下左右相连接的陆地视为同一岛屿,0表示海洋,1~9表示陆地。计算小哼降落地所在岛的面积(即有多少格子)#include#includeusing namespace std;int a[51][51];//用来存储地图 int book[51][51],sum,n,m;void dfs(int x,int y)

2017-04-22 18:15:34 453

原创 DFS/BFS(解决炸弹人)

问题省略……DFS解决炸弹人#include#includeusing namespace std;char a[20][21];//用来存储地图 int book[20][20],maxn,mx,my,n,m;int getnum(int i,int j) { int x,y,sum=0;//sum用来计数(可以消灭的敌人总数,所以初始化为0) //将坐标i、j复

2017-04-22 18:12:19 412

原创 深度优先搜索/广度优先搜索(解决小哈)

问题省略……深度优先搜索 (实例:解救小哈)思路:让小哼往右边走,直到走不通的时候再回到这里,再去尝试另一个方向。规定一个顺序,按顺时针方向来尝试(即按照右、下、左、上的顺序去尝试)。#include#includeusing namespace std;int a[51][51],book[51][51];int n,m,p,q,minn=99999999;vo

2017-04-22 18:07:59 820 2

原创 简单方法解决八皇后问题

八皇后问题 回溯递归 C语言版#include #include #define max 8int queen[max], sum=0; /* max为棋盘最大坐标 */void show() /* 输出所有皇后的坐标 */{ int i; for(i = 0; i < max; i++) { printf("(%d,%d) ",

2017-04-22 17:56:21 2196

原创 MATLAB中dsolve与syms

dsolve在matlab命令窗口输入help dsolve可以得到关于dsolve函数的一些帮助。基本的使用方式是dsolve('equ');其中,equ表示方程,返回结果为带有常量的符号解,例一:dsolve('Dy = y + 1','x') 是dy/dx = y + 1 的解syms是定义多个符号是符号变量的意思

2017-04-21 14:53:06 13258

原创 拉丁方阵

构造 NXN 阶的拉丁方阵(2=N=9),使方阵中的每一行和每一列中数字1到N只出现一次。如N=4时:1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3 参考点击打开链接,可以发现:若将每 一行中第一列的数字和最后一列的数字连起来构成一个环,则该环正好是由1到N顺序构成;对于第i行,这个环的开始数字为i。按照 此规律可以很容易的写出程序。下面给出构造

2017-04-15 13:19:27 756

转载 魔术师的猜牌术

魔术师的猜牌术(一维数组)魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次数1,2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子

2017-04-15 11:05:28 6525

原创 STL之equal_range() 函数

函数原型:#include pair equal_range( forward_iterator first, forward_iterator last, const TYPE& val );pair equal_range( forward_iterator first, forward_iterator last, const TYPE& val, CompFn comp );

2017-04-15 10:04:46 1340

原创 使用筛选法得出1~n之间素数

//使用筛选法得出1~n之间素数 思路:使用1~n的数组prime来指示1到n的数是否为素数。如果prime[i]为0,则为素数。 (1)从2开始,将2*2到n之间的2的倍数删除 (2)从剩下的数据集合中找到最小的素数3,将3*2到n之间3的倍数删除(3)从剩下的数据集合中找到最小的素数x,将x*2到n之间x的倍数删除(4)重复(3)步骤直到剩下的数集合为空时,算法结束 

2017-04-15 09:57:06 2040

转载 [LeetCode]40.Combination Sum II

【题目】Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.Each number in C may only be used once in t

2017-04-15 09:50:45 229

转载 [LeetCode]39.Combination Sum

【题目】Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.The same repeated number may be chosen from C unli

2017-04-15 09:44:31 230

原创 lower_bound和upper_bound算法

ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置。ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)算法返回

2017-04-15 09:34:05 549

原创 约瑟夫问题

约瑟夫问题的两个O(log n)解法这个是学习编程时的一个耳熟能详的问题了:n个人(编号为0,1,...,n-1)围成一个圈子,从0号开始依次报数,每数到第m个人,这个人就得自杀,之后从下个人开始继续报数,直到所有人都死亡为止。问最后一个死的人的编号(其实看到别人都死了之后最后剩下的人可以选择不自杀……)。这个问题一般有两种问法:给出自杀顺序。不少数据结构初学书

2017-04-15 09:19:23 713

原创 static对程序运行影响

静态成员static#includeusing namespace std;void f() { static int i=15; i++; cout<<"i="<<i<<endl; }int main() { for(int k=0;k<2;k++) f(); return 0;} i=16i=17#includeusing names

2017-04-15 09:15:09 511

原创 ADV-108-算法提高-分数统计

算法提高 分数统计问题描述  2016.4.5已更新此题,此前的程序需要重新提交。问题描述  给定一个百分制成绩T,将其划分为如下五个等级之一:  90~100为A,80~89为B,70~79为C,60~69为D,0~59为E  现在给定一个文件inp,文件中包含若干百分制成绩(成绩个数不超过100),请你统计五个等级段的人数,  并找出人数最多的那个等级段,按照从大到

2017-04-06 22:19:15 534

原创 ADV-104-算法提高-打水问题

算法提高 打水问题问题描述  N个人要打水,有M个水龙头,第i个人打水所需时间为Ti,请安排一个合理的方案使得所有人的等待时间之和尽量小。输入格式  第一行两个正整数N M 接下来一行N个正整数Ti。  N,M输出格式  最小的等待时间之和。(不需要输出具体的安排方案)样例输入7 33 6 1 4 2 5 7样例输出11提示  一种最佳打水方

2017-04-06 22:04:29 410

原创 ADV-103-算法提高-逆序排列

算法提高 逆序排列问题描述  编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中。当用户输入0时,表示输入结束。然后程序将把这个数组中的值按逆序重新存放,并打印出来。例如:假设用户输入了一组数据:7 19 -5 6 2 0,那么程序将会把前五个有效数据保存在一个数组中,即7 19 -5 6 2,然后把这个数组中的值按逆序重新存放,即变成了 2 6 -5 1

2017-04-06 22:02:13 491

原创 ADV-102 算法提高 单词个数统计

ADV-102 算法提高 单词个数统计问题描述  编写一个程序,输入一个字符串(长度不超过80),然后统计出该字符串当中包含有多少个单词。  例如:字符串“this is a book”当中包含有4个单词。  输入格式:输入一个字符串,由若干个单词组成,单词之间用一个空格隔开。  输出格式:输出一个整数,即单词的个数。  输入输出样例  用户输入数据样例:  thi

2017-04-06 21:58:31 458

原创 ADV-99-算法提高-栅格打印问题

算法提高 栅格打印问题问题描述  编写一个程序,输入两个整数,作为栅格的高度和宽度,然后用“+”、“-”和“|”这三个字符来打印一个栅格。  输入格式:输入只有一行,包括两个整数,分别为栅格的高度和宽度。  输出格式:输出相应的栅格。  输入输出样例样例输入3 2样例输出+-+-+|   |   |  +-+-+|   |   |+-+-+

2017-04-06 21:43:30 329

原创 ADV-97-算法提高-十进制数转八进制数

算法提高 十进制数转八进制数  编写函数,其功能为把一个十进制数转换为其对应的八进制数。程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数。样例输入 9274 样例输出 22072样例输入 18 样例输出 22 #include using namespace std;int main() { int n; cin>>n

2017-04-06 21:36:41 545

原创 ADV-95-算法提高-字符串比较

算法提高 字符串比较独立实现标准字符串库的strcmp函数,即字符串比较函数,从键盘输入两个字符串,按字典序比较大小,前者大于后者输出1,前者小于后者输出-1,两者相等输出0。样例输入: apple one 样例输出:-1样例输入: hello he样例输出:1样例输入: hello hello样例输出:0#inclu

2017-04-06 21:34:23 677

原创 ADV-94-算法提高-复数归一化

算法提高 复数归一化编写函数Normalize,将复数归一化,即若复数为a+bi,归一化结果为a/sqrt(a*a+b*b) + i*b/sqrt(a*a+b*b) 。使用结构体指针类型作为函数参数可能是必要的。其中实部和虚部由键盘输入,输出为归一化结果,如果归一化结果的实部或虚部为小数的要求保留一位小数。样例输入:(格式说明:3 4 分别为以空格隔开的实数的实部和虚部) 

2017-04-06 21:30:59 580

原创 ADV-92-算法提高-求最大公约数.

算法提高 求最大公约数编写一函数gcd,求两个正整数的最大公约数。样例输入: 5 15样例输出:5样例输入: 7 2样例输出:1思路:求出最小公倍数,然后用两个数之乘积去除以最小公倍数即 最大公约数#include #include using namespace std;int main() { int a,b,c;

2017-04-06 21:18:01 498

原创 ADV-89-算法提高-输出九九乘法表、ADV-90-算法提高-输出日历

算法提高 输出九九乘法表 编制程序,按照下述格式打印九九乘法表。输出样例:Nine-by-nine Multiplication Table--------------------------------------     1   2   3   4   5   6   7   8   9-------------------------------------- 1

2017-04-06 21:14:47 983

原创 ADV-9-算法提高-递归倒置字符数组

算法提高 递归倒置字符数组 问题描述  完成一个递归程序,倒置字符数组。并打印实现过程  递归逻辑为:  当字符长度等于1时,直接返回  否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分输入格式  字符数组长度及该数组输出格式  在求解过程中,打印字符数组的变化情况。  最后空一行,在程序结尾处打印倒置后该数组的各个元素。样例输入Sample

2017-04-06 21:07:03 882

原创 ADV-84-算法提高-图形输出、ADV-88-算法提高-输出正反三角形

算法提高 图形输出编写一程序,在屏幕上输出如下内容:  X | X | X  ---+---+---  | |  ---+---+---  O | O | O  注意:本题请同学们严格按照图形的格式输出,对齐,其中X和O为大写,否则系统会判为错误  #include using namespace std;int main() { cout << " X

2017-04-06 20:53:40 752

原创 ADV-81-算法提高-数的运算

算法提高 数的运算   输入一个正整数(范围[1..10000]),打印其平方(不保留小数位)、平方根、倒数。(用指针实现,保留2位小数, 输出每个数之间以一个空格隔开)样例输入2样例输出4 1.41 0.50#include #include #includeusing namespace std;int main() { int a; cin >

2017-04-06 20:43:05 429

原创 ADV-78-算法提高-最长单词

算法提高 最长单词编写一个函数,输入一行字符,将此字符串中最长的单词输出。  输入仅一行,多个单词,每个单词间用一个空格隔开。单词仅由小写字母组成。所有单词的长度和不超过100000。如有多个最长单词,输出最先出现的。样例输入I am a student样例输出student#include using namespace std;int main()

2017-04-06 20:12:48 910

原创 ADV-74-算法提高-计算整数因子

算法提高 计算整数因子问题描述  输入一个整数,输出其所有质因子。输入格式  输入只有一行,包含一个整数n。输出格式  输出一行,包含若干个整数,为n的所有质因子,按照从小到大的顺序排列。样例输入6样例输出2 3数据规模和约定  1#include using namespace std;int main() { int

2017-04-06 20:04:47 443

原创 ADV-73-算法提高-数组输出

算法提高 数组输出  输入一个3行4列的数组,找出该数组中绝对值最大的元素、输出该元素及其两个下标值。如有多个输出行号最小的,还有多个的话输出列号最小的。样例输入1 2 3 5-2 5 8 96 -7 5 3样例输出9 2 4#include using namespace std;int main() { int m = 0, x, y;

2017-04-06 20:02:04 603 1

原创 ADV-71-算法提高-判断回文

算法提高 判断回文    编程判断一个字符串是否是回文,当字符串是回文时,输出字符串:yes!,否则输出字符串:no!。所谓回文即正向与反向的拼写都一样,如adgda。  长度在100以内,且全为小写字母样例输入adgda样例输出yes!#include using namespace std;int main() { string s; cin

2017-04-06 19:55:20 608

原创 ADV-70-算法提高-冒泡法排序

算法提高 冒泡法排序输入10个数,用“冒泡法”对10个数排序(由小到大)这10个数字在100以内。样例输入1 3 6 8 2 7 9 0 4 5样例输出0 1 2 3 4 5 6 7 8 9#include using namespace std;int a[10];int main() { int c; for(int i=0;i<10;i++) {

2017-04-06 19:54:02 241

原创 ADV-69算法提高-质因数

算法提高 质因数 将一个正整数N(1样例输入66样例输出66=2*3*11//自己根据 《分解质因数》博客学习的代码 #include using namespace std;int main() { int n; cin >> n; cout<<n<<"="; for(int i=2;i<=n;i++) { while(n!=i) { if(

2017-04-06 19:50:37 1008

MySql必知必会

MySql必知必会·MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会MySql必知必会

2017-09-04

快速上手MySql && MySql GUI工具 SQLyog Community

快速上手MySql

2017-06-15

空空如也

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

TA关注的人

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