自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 资源 (4)
  • 收藏
  • 关注

原创 整数划分

整数划分,是指把一个正整数n写成如下形式:       n=m1+m2+...+mi; (其中mi为正整数,并且1        如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi)       例如当n=4时,结果应为,{4},{3,1},{2,2},{2,1,1},{1,1,1,1};在算法书上介绍的思路如下: 根据n和m的关系,考虑以下

2016-03-11 16:23:27 1365

原创 二叉树的递归与非递归

要求:给定一个二叉树序列,要求以递归与非递归的形式先序输出。递归的本质就是系统自动用系统工作栈来将参数入栈与出栈,所以递归化与非递归就是程序员自己来控制参数的入栈与出栈,可用循环加自定义栈来控制。代码如下:#include#includeusing namespace std;typedef struct BTNode{ char ch; struct BTNode *lc

2016-03-11 16:06:07 1349

原创 螺旋数组

要求:螺旋数组是指将给定的存储连续自然数的二维数组中的数字从最外层开始以顺时针形式输出如:二维数组为 {{1,2,3,4},   {5,6,7,8}, {9,10,11,12},{13,14,15,16}}则输出为: {{1,2,3,4}, {12,13,14,5}, {11,16,15,6}, {10,9,8,7}}先上代码,然后再来分

2016-03-11 15:57:49 17328

原创 【图的DFS】图的DFS非递归算法

在DFS的递归算法中,DFS框架如下:1访问起点v02依次以v0的未访问的连接点为起点,DFS搜索图,直至图中所有与v0路径相通的顶点都被访问。3若该图为非连通图,则图中一定还存在未被访问的顶点,选取该顶点为起点,重复上述DFS过程,直至图中全部顶点均被访问过为止。而在非递归的DFS框架中,运用栈来取代递归(递归的本质就是入栈出栈),所以用自定义的栈取代递归栈,具体框架如下:1

2016-03-11 15:41:10 5281

原创 【图的最短路径】迪杰斯特拉算法求图的最短路径

要求:求带权有向图中某一结点到其他结点的最短路径。用迪杰斯特拉算法求解,迪杰斯特拉算法书上的描述如下:对于图G=(V,{E}),将图中的顶点归为两组:第一组S:已求出的最短路径的终点集合(开始为{v0})第二组:V-S尚未求出的最短路径的顶点的集合(开始为V-{v0}的全部顶点)该算法将最短路径长度的递增顺序逐个将第二组中的顶点加入到第一组中,直到所有的顶点都被加入到第一组顶点

2016-03-11 15:01:37 2424

原创 求解n皇后

要求:在国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法思路:很直观的想法就是在棋盘上一个一个皇后的摆,如果冲突,则摆放在另一个位置,直至此次可以把n各皇后摆好而不产生冲突,则说明此种方法为一个解。然后将最后一个放置的皇后换个位置摆放,直至不产生冲突为止。很显然,此种思路即为算法中的回溯算法。基于此思路代码如下:#includ

2016-03-11 14:31:16 2019 5

原创 求某一字符串的最长重复子串

要求:给定一个字符串,求该字符串的最长重复子串,最长重复子串是指在一个主串中,重复子串中最长的那一个,如:abcdefadef 则答案为:def。预备知识:要解决此题,要用到后缀数组(用指针数组来表示)思路:先用后缀数组存储主串的每个子串的后缀,然后对后缀数组中的元素进行排序。最后通过扫描相邻两个数组中的后缀来判断最长的子串基于此思路代码如下:#include #include

2016-03-11 14:24:18 3145

原创 字符串的n位左旋

要求:将主串的某一段(n位)翻转到主串的最后,如:abcdef以2位翻转则结果为:cdefab。要求时间复杂度为O(n),空间复杂度为O(1)思路一:可以重新定义一个与原串相同大小的字符数组result[len],用来存放最终结果,先将原串中的后len-n位复制到result[len]数组的前len-n位,然后将原串的前n位复制到result[len]中的后n位,但这种思路要求重新定义一个中间

2016-03-10 21:59:11 1175

原创 字符串的包含

要求:给定一个主串X和子串Y判断主串是否包含子串,包含是指子串中的所用字符均在主串中出现,所谓出现不要求连续,如:主串X:abcdef  子串为:Y:cde,Z:ade,M:adx,则答案为true,true false,要求空间复杂度为O(1)注意字符串的包含与字符串的查找的不同,具体可以参考我的博客:思路:因为是字符串的处理且要求空间复杂度为O(1),所以自然想到用哈希表处理,

2016-03-10 16:13:22 1702

原创 字符串的查找

要求:字符串查找即在主串X中查找是否包含子串Y,与字符串包含不同的是,字符串的查找必须是连续的,即Y中的子串必须在X中连续的出现才算。如:string main_str="ABCDEF";string sub_str_1="BCD";string sub_str_2="ACD";则在主串main_str中能查找到子串sub_str_1,而不能查找到子串sub_str_2.所以输出结

2016-03-10 15:50:50 740

原创 寻找第k元

要求:给定一个数组array[n],寻找大小排在第k的元素思路一:最直接的思路就是先排序,这样可以直接通过数组下标找到第k大的元素,最好的快速排序时间复杂度为O(nlogn)。思路二:我们可以在快速排序的基础上进行改进,即运用快速排序框架,不过快速排序中的基准元素,我们采用随机划分而不是快速排序那样指定为一个固定的值。此方法时间复杂度为O(n)此思路的代码如下:#include#

2016-03-10 15:44:59 1165

原创 【数据结构课程大作业】通信录管理系统

该软件为本人数据结构课程设计作业,采用win32控制台程序,基于链表的增删改查,可供计算机专业在校大学生作为数据结构课程设计参考每次使用需输入密码,初始密码为:123。可在软件主界面选择修改密码功能修改密码。具体功能如下:1输入信息。用来输入联系人的姓名与号码,当输入# #时表示结束。例如htq 1234567hq 123456789# #则htq 1234567

2016-03-10 14:45:30 35670 5

原创 统计一个句子中的单词个数

要求:输入一个字符串,输出该字符串中的单词的个数,如" I am a college studnet. hei  hei",输出结果为7思路:用一个while循环扫描整个字符串,先将单词个数初始化为0,当扫描到一个单词则sum++,关键是如何判断是否满足为一个单词,如果用字符指针pIndex指向当前处理字符,则满足*pIndex!=' '&&*(pIndex+1)==' '时即为一个单词,基于

2016-03-10 12:09:33 4881

原创 句内单词反转

要求:将一个字符串在句内按单词反转,如将I am a student.反转后输出student. a am I思路一:很容易观察到输出后的结果是在原字符串基础上按单词逆序输出,因此很容易想到用栈来实现,因为栈是用来先进后出的一种数据结构,因此我们可以将每个单词入栈,然后出栈即为结果。思路二:可以考虑用反转函数来实现,即先将整个句子反转,然后再将每个单词反转。如:将原字符串反转后为:

2016-03-10 11:37:19 1277

原创 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个

要求:这是本人参加美团校招在线考试笔试题,如果此行为违反了美团校招笔试题商业保密性,请与本人联系。

2016-03-10 10:17:01 2687 1

原创 求连续子数组的最大和

要求:输入一个整型数组,数组里有正数也有负数,数组中一个或连续的多个整数构成一个子数组,求所有子数组的和的最大值。如:输入的数组为{1,-2,3,10,-4,5,1,-5},则输出结果为15.思路一:最直接的思路,可以用两层for循环解决,用来枚举出所有的子数组的和,但这种方式时间复杂度显然为O(n*n)思路二:因为只要求输出子数组和最大的值且连续,因此,很自然想到如果用cur

2016-03-09 16:02:46 1011

转载 同一进程不同线程之间的资源共享与独享

同一进程不同线程之间的资源共享与独享线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。     进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括:    1.线程ID      每个线

2016-03-07 21:41:19 4201

原创 C语言中的内存分配

对于一个C语言程序而言,内存空间主要由以下几个部分组成:1)程序代码区:用来存储程序的二进制代码2)全局区/静态存储区3)BSS段:用来存储未初始化的全局变量和静态变量。4)栈区:存储局部变量,函数的形参。5)堆区:动态分配的内存。用图示表示如下:

2016-03-07 21:37:46 993

原创 安卓项目包命名规范及常见项目架构

在Java中我们通常把具备相同或相似功能的一些类放在同一个包中,当然 不同公司会有不同的命名方式,但大体都相同,一个好的命名应见名知义,提高代码可读性,以利于后期代码的修改与维护。下面基于我自己做项目中的一些感触谈谈自己对包命名规范的理解。一Java包命名规范1)包(packages): 采用反写域名命名规则,即com.xx.xxx.xxxx形式     全部使用小写字母。一级包名为c

2016-02-25 16:58:48 3336

原创 安卓四大组件总览

在安卓中四大组件 (Component)指的是:Activity,Service,BroadcastReceiver,ContentProvider。此博客仅仅对安卓中四大组件从整体上进行简单的分析,了解他们在安卓系统框架中处的位置与作用,各组件详细介绍将单独讲解。首先,我们来看一下这几个类之间各自的继承关系从上述可以看出四大组件中的Activity,Service组件都继承自Context

2016-02-05 10:37:27 1352

NDK开发so层与java代码相互调用

NDK开发so层与java代码相互调用

2017-06-14

安卓逆向分析基本工具集合

安卓逆向分析基本工具集合,包括apktool,dex2jar,jd-gui,android killer

2017-06-07

安卓动态换肤

动态加载未安装的apk中的资源文件,实现类似QQ换肤效果

2017-06-03

【数据结构课程大作业】通信录管理系统

该软件为本人数据结构课程设计作业,采用win32控制台程序,基于链表的增删改查,实现简单的通信录管理系统,具体可以参看我的博客http://blog.csdn.net/htq__/article/details/50846567

2016-03-10

空空如也

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

TA关注的人

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