自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mastli's Blog

Welcome

  • 博客(57)
  • 收藏
  • 关注

原创 动态数组自增策略的复杂度分析

由于编程时很难准确预知需要多少空间。比如申请了一个定长的数组存放数据,但是突然发现数组填满了,因此需要一个更大的数组来填放数据,这就涉及了数组的自增策略问题。定增策略定增策略每次扩容将数组长度增加定长。设我们需要一个长为nnn的数组,数组初始长度为III,每次扩容的大小为III,则n=(m+1)In=(m+1)In=(m+1)I,mmm为扩容次数。第一次扩容需要一块2I2I2I长度的数组空间来...

2019-06-07 16:38:43 632 3

原创 读文件时输入流ifstream中函数tellg()与seekg()的详解与示例

读取文件时有时会需要回退比如读完第n行想回退到第n-1行再读一次n行或者读字符时想回退到n个字符之前都可以使用tellg()和seekg()tellg() 用于在输入流中获取位置seekg()用于设置在输入流中的位置其实本质上文件读写就是一个指针指向文件中某个位置后进行读写,所以简单来说tellg()和seekg()都是用于设置该指针的位置的。//t

2017-05-23 11:14:14 15128 1

原创 编译原理中 0型,1型,2型,3型,4型四元式及其对应的DAG表示

今天百度谷歌发现网上并没有相关文章或者问答,只好查书自己写了一个。图画的有点简陋,现在还不知道怎样画出优美一点的插画,只好先这样凑合了。类型四元式说明DAG节点表示0型(=,B, ,A)把B赋值给变量A,即A,B具有同样的值,无条件转向语句也可以这样表示1型(

2016-12-04 16:46:46 6973

原创 编译原理/紫龙书(第2版) 答案 1.6

1.6.1w=13x=11y=13z=111.6.2w=9x=7y=13z=111.6.3B1-w: B1-B3-B4//B1块的w的作用域为:B1块减去B3块减去B4块B1-x: B1-B2-B4B1-y: B1-B5B1-z: B1-B2-B5B2-x: B2-B3B2-z: B2B3-w:

2016-11-26 22:38:15 6670 1

原创 编译原理/紫龙书(第2版) 答案 1.3

1.3.1强迫式的:C,C++声明式的:Lisp,ML冯诺依曼式的:Fortran,C面向对象的:C++,Java,Python,VB函数式的:ML第三代:Fortran,Cobol,Lisp,C,C++,Java第四代(为特定应用设计的语言):Cobol(数据处理)脚本语言:Python,Perl

2016-11-23 20:05:26 1641

原创 编译原理/紫龙书(第2版) 答案 1.1

1.1.1编译器是一种可以将源语言翻译成等价的目标语言的的程序解释器是另一种语言处理器,他直接利用用户提供的输入来执行源程序中的操作1.1.2编译器的优点是其生成的机器语言目标程序执行起来通常比解释器快很多而解释器因为是逐个语句地执行源程序,所以错误诊断效果通常比编译器更好1.1.3汇编语言比机器语言更容易调试和进行错误诊断1.1.4c语

2016-11-23 18:08:31 2823

原创 常量指针与指针常量的区别

//指针常量只能改变指向的内容,不能改变指针指向的地址int main(){ int a = 0; int b = 2; int *const p2 = &b;//指针常量 cout<<"p2:"<<*p2<<endl; *p2 = a; //p2 = &a; //报错 cout<<"p2:"<<*p2<<end

2016-11-19 19:24:45 416

原创 关于C++中String串是否以'\0'结尾

写程序要判断是否读到string尾,我在visual studio 2015上尝试了一下。string a = "x";if (a[1] == '\0')cout << "yes";else cout << "no" << endl;cin.get();结果输出为yes也就是说,在visual studio 2015上的编译器是将string的结尾视为'\0'的,但是我没

2016-11-09 10:53:11 3115

原创 关于c/c++中的isdigit()函数

关于isdigit函数isdigit函数只能判断字符型是否是数字如下#include #include using namespace std;int main() { char c;//此时输入的是整型数字 while (cin>>c) { if (isdigit(c)) { cout<<c<<"是数字"<<endl;

2016-11-06 22:42:32 47872

转载 python中的运算符

Table 2.1. Python运算符列表运算符描述x+y,x-y加、减,“+”号可重载为连接符x*y,x**y,x/y,x%y相乘、求平方、相除、求余,“*”号可重载为重复,“%”号可重载为格式化,,>,>=,==,,!=比较运

2016-04-01 11:00:32 717

原创 python中的for i in range

n = input()for i in range(0,n):#for(i=0;i<5;i++) print i

2016-03-31 18:16:41 19765 2

原创 python 关于tuple的一些小笔记

#coding=utf-8#关于tuple的笔记#tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,#但是,tuple一旦创建完毕,就不能修改了。#tuple 没有append() insert() pop()#创建tuple和创建list唯一不同之处是用( )替代了[ ]。#获取 tuple 元素的方式和 list 是一模一样的,#我们可以

2016-03-31 17:50:39 478

原创 python关于list的一些小笔记

#coding=utf-8#关于list的笔记#注:print 输出时用','隔开每个输出项,会自动添加一个空格# 输出时用'+'则会将所有输出项强制转换为同一类型后输出#python 是动态语言,所以list 中包含的元素不要求都必须是同一种数据类型例如L = [1,'haha',"hehe"]print "不同种的数据类型也可存在于同一个list中:",L#appen

2016-03-31 17:32:38 404

原创 python 中的赋值语句的运用

#python 的赋值方法1.序列赋值x,y,z = 1,2,3#可看作:x=1,y=2,z=32.链接赋值x = y = 1print id(x)print id(y)#注意:链接赋值会将1的引用赋值给x和y,因此打印出x和y的id是相同的# 3.增量赋值x = x + 1#可写作:x+ = 1#这个特点其他很多语言中都有,比如c++,但要注意的是#c/c++

2016-03-30 22:06:25 10361

原创 Python 中的除法运算 // 和 /

在Python中,除法可用//或者/其中//代表整数除法,而/代表浮点数除法必须从__future__中导入divisionfrom __future__ import divisionprint 4/3print 4//3# OUTPUT:# 1.33333333333# 1

2016-03-30 21:54:25 767

原创 Python 中 append跟join的区别

# coding=utf-8#append# append是list(列表)的方法,函数参数是可以是任意一个元素,作用是在列表的最后添加上这个新元素。例如a=[1,2,3]则# a.append(4)以后a就是[1,2,3,4]a = [1,2,3]print aa.append(4)print a#join# join是string(字符串)的方法,函数参数是一个由字符串

2016-03-30 21:01:24 9032

原创 Python 读取输入 input 和raw_input

# raw_input()str = raw_input("Please input the string : (use raw_input)")print "The string is : ",strprint "The string is : {0}".format(str)print "The string is : %s" %str# input()str = input(

2016-03-30 20:38:34 3112

原创 Python 中调用其他文件的两种方法 input 和raw_input

第一种import mylib #引入名称空间h = mylib.Hello() #创建一个对象h.sayHello() #利用对象调用函数第二种from mylib import Hello #引入Hello类h = Hello() #创建对象h.sayHello() #通过对象调用函数

2016-03-30 00:06:08 3281

原创 python 出现错误 SyntaxError: Non-ASCII character 的解决方法

报错:SyntaxError: Non-ASCII character '\xe4' in file C:/Users/Li/PycharmProjects/untitled/flow.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details原因:Py

2016-03-29 23:28:15 15757 1

原创 hdu 2544 最短路 题解 (dijkstra/迪杰斯特拉算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 这道题用dijkstra模板一套就出来了。 需要注意的是,这里的边应该是双向边,所以在输入边的数据的时候应该这样写:for(i=0;i<m;i++){ scanf("%d%d%d",&a,&b,&c); g.map[a]

2015-08-19 00:55:46 1238 4

原创 迪杰斯特拉/dijkstra 算法模板(详细注释)

迪杰斯特拉算法的模板(带详细注释)

2015-08-17 08:03:12 6401 2

原创 hdu 2102 A计划 详细题解 (BFS+优先队列)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2102 这道题属于BFS+优先队列 开始看到四分之一的AC率感觉有点吓人,后来一做感觉就是模板改了点东西而已,一遍就AC了,不过在主函数和全局变量里面都定义了n和m导致我白白浪费了debug的时间。果然全局变量得小心用啊。 跟模板一样的,定义一个结构体,只不过多加了个参数,就是迷

2015-08-14 21:14:02 794

原创 hdu 1242 Rescue (BFS+优先队列)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1242  这道题目我是用BFS+优先队列做的。听说只用bfs会超时。 因为这道题有多个营救者,所以我们从被营救者开始bfs,找到最近的营救者就是最短时间。 先定义一个结构体,存放坐标x和y,还有到达当前点(x,y)消耗的时间。struct node { i

2015-08-14 20:30:44 632 1

原创 hdu 1800 Flying to the Mars 详细题解 哈希

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1800 这道题目是道哈希的简单题,主要难度在于怎样将问题抽象画。 对于每一组数据,我要求它最少需要几把扫帚。 我们把2 4 5 6 4这组输入排序,变成了2 4 4 5 6,每一次取最长的一个递增序列,取的次数就是我们需要的答案,请仔细想想,若输入为2 4 5 6,那我们只需要一

2015-08-12 18:51:33 1332

原创 hdu 1228 A + B 详细题解 字符串/哈希

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1228这道题可以同时用两种方法做,第一种是字符串,第二种是哈希。 第一种方法:我们可以定义一个字符串类型的二位数组,存放”zero”……”nine”十个字符串 这十个字符串可以与下标0……9一一对应。这样就可以建立字符串与数字之间的关系了char a[][10

2015-08-12 18:32:21 856

原创 hdu 1068 Girls and Boys 二分图的最大匹配

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1068#include #include #include using namespace std;int n;int used[505];int link[505][505];int boy[505];int find(int x){ int i; f

2015-08-11 20:49:08 603

原创 hdu 2063 过山车 二分图的最大匹配 匈牙利算法

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063#include #include #include using namespace std;int n,m,k;int link[505][505];int used[505];int boy[505];int find(int x){ int i;

2015-08-11 18:53:15 546

转载 搞懂树状数组

这篇文章真的写的很好!转载自:http://blog.csdn.net/int64ago/article/details/7429868写下这个标题,其实心里还是没底的,与其说是写博帖,不如说是做总结。第一个接触树状数组还是两年前,用什么语言来形容当时的感觉呢?……太神奇了!真的,无法表达出那种感觉,她是那么的优雅,10行不到的代码,却把事情干的如此出色

2015-08-06 14:37:58 402

原创 HDU 1272详细题解(并查集)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 这道题属于并查集。 不知道并查集的初学者可以看看我另一篇并查集入门的文章:http://blog.csdn.net/xdz78/article/details/47296585 解题思路:题目的关键是,判断从一个点到任一另一个点是否有两条路径能够到达,在转换一下,我们

2015-08-06 10:07:20 865

原创 POJ 2524 Ubiquitous Religions 详细题解(并查集)

题目链接:http://poj.org/problem?id=2524 这道题属于并查集  题目大意:在一个学校内调查学生的信仰情况,告诉你学校有n个人,给你共m组x,y表示信教情况相同,问一个学校学生信仰的宗教的最大种数 这也是一道模板题,没啥说的,我在另一篇文章里面讲过模板题的做法,大家可以参考下。http://blog.csdn.net/xdz78/artic

2015-08-05 17:38:41 649

原创 HDU/HDOJ 1232 超详细题解(并查集入门教程)

城市之间由道路连接,相连的城市可以看做一个集合,如:a、b相连,c、d相连,则a和b属于集合A,c和d属于集合B。之后又有人告诉你b和e相连,那么就把e加入到集合A中,以此类推。然后不同集合若是想组成一个大的集合,即集合A和集合B若

2015-08-05 14:29:28 2000

原创 hdu/hdoj 1083 courses 二分图 题解

CoursesTime Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4954    Accepted Submission(s): 2377Problem DescriptionConsider a group

2015-08-03 14:40:48 602

原创 poj2342 Anniversary party 题解

Anniversary partyTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5158 Accepted: 2925DescriptionThere is going to be a party to celebrate the 80-th Ann

2015-08-02 18:43:39 464

原创 线索二叉树的实现

#include #include typedef char elemtype;//线索储存标志位//link(0)表示指向左右孩子的指针//link(1)表示指向前驱后继的线索typedef enum {link,thread}pointertag;typedef struct bithrnode{ char data; struct bithrnode *lc

2015-05-28 23:32:41 513

原创 约瑟夫问题——链表实现

据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因

2015-05-28 23:16:49 1289

原创 递归法实现反向输出字符串

#include #include char s[100];char digui(){ char c; scanf("%c",&c); if(c!='\n'){ printf("%c",digui()); } return c;}int main(){ printf("%c",digui()); return 0

2015-05-28 23:15:33 808

原创 八皇后 c语言递归实现方法(带注释)

#include #include int count;//递归法实现八皇后问题//参数row表示起始行,参数n表示列数//参数(*chess)[8]表示指向棋盘每一行的指针int notdanger(int row,int j,int (*chess)[8]){ int i,k; //判断列方向 for(i=0;i<8;i++){ if(*

2015-05-28 23:08:18 8439 7

原创 《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(非递归)

转载请注明出处:http://blog.csdn.net/xdz78#include #include //查找单链表中的特定元素,《数据结构与算法——c语言描述》 3.11 答案typedef struct student { int data; struct student *next;}Node;int main(){ int n;//

2015-05-26 02:51:29 1135

原创 《数据结构与算法——C语言描述》答案 3.11 查找单链表中的特定元素(递归)

转载请注明出处:http://blog.csdn.net/xdz78#include #include //查找单链表中的特定元素,《数据结构与算法——c语言描述》 3.11 答案int count;//全局变量自动初始化为0int m;//需要查找的元素大小typedef struct student { int data; struct studen

2015-05-26 02:50:21 4409

原创 《数据结构与算法——C语言描述》答案 3.15 自调整表的实现(数组法)

转载请注明出处:http://blog.csdn.net/xdz78#include #include //3.15int a[]={1,2,3,4,5,6,7,8,9};void adjust(int i,int m){ int j; for(j=i;j>0;j--){ a[j]=a[j-1]; } a[0]=m;}int ma

2015-05-26 02:46:26 2463

空空如也

空空如也

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

TA关注的人

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