- 博客(75)
- 资源 (6)
- 收藏
- 关注

原创 2018华为软件精英挑战赛总结及代码
2019复赛结束,成渝季军,深圳决赛见////////////////////////////////////////////////////////////////// 我是分割线君 ////////////////////////////////////////////////////////////////////////////////////////先贴上我们的...
2018-12-21 18:33:54
24919
36

原创 算法导论第三版第四章 最大子数组和的三种解法(暴力、教材分治法、线性解法)
1.暴力求解法该方法的思想非常简单,先找出从第1个元素开始的最大子数组,而后再从第2个元素开始找出从第2个元素开始的最大子数组,依次类推,比较得出最大的子数组。实现代码如下:/* 常规方法,时间复杂度O(n*n) 先从第一个元素开始向后累加, 每次累加后与之前的和比较,保留最大值, 再从第二个元素开始向后累加,以此类推。 */ int MaxSubSum1(int *ar
2017-12-02 11:24:05
1120

原创 算法导论第三版-思考题2-1
在合并排序中对小数组采用插入排序,代码如下:#include#includeusing namespace std;int* Insert_sort(int A[],int B[],int p,int q,int r);void Merge(int A[],int p,int q,int r);void Merge_sort(int A[],int p,int r,int k);v
2017-12-01 11:17:13
1826
1

原创 Windows网络编程入门:简单的客户端和服务器通信程序调试
昨日入手Windows网络编程经络这本书,第一章给了Echo客户端和服务器的简单通信实例程序。从小白到入门目测都是比较苦逼,居然想不到怎么来测试结果。什么同时运行啊、分别编译运行啊乱七八糟的想法就开始冒。最后还是解决了。1.运行“服务器.exe”文件2.在开始菜单中找到“命令提示符”,然后输入“cmd”进入命令行模式3.cd进入客户端.exe所在的debug文件夹4.输入“客户端.
2017-11-03 16:53:00
1785

原创 基于Qt的截图工具,实现截图后进行编辑
基于Qt的截图工具,采用了类似QQ截图的控制面板,先上效果图。 1.基本截图 2.画箭头 3.画矩形 4.画圆形 5.文字编辑 6.同时进行编辑 截图的思路主要是先得到当前的全屏图,然后沿着这个全屏图绘制一大圈路径,然后用暗色填充,即得到了背景大图。基本的截图操作就是根据鼠标初始按下的位置和最终松开的位置,根据这两个位置点,得到一个矩形,按照这个矩形绘制路径,...............
2017-10-14 13:42:10
3975
19

原创 C++中各种数据成员及成员函数的定义及使用
1.类是自定义的数据类型.类与应用程序不同,类的功能虽然独立,但不能独立启动,就象汽车零件那样. 2.Class 是一种数据类型, 其变量为对象.对象包含有member variables(成员变量)和member functions(成员函数).class Date{ int year, month, day;public: void set(int y,int m,int d);
2017-10-09 15:47:30
14850

转载 Qt5 MySql驱动问题(qt和mysql各种小白问题亲测解决,若有相关问题可留言交流)
QT5.5虽然自带mysql驱动,不再需要像QT4那样自己进行编译。但是QT对mysql总归不是那么友好,在连接过程中,遇到了一坨又一坨的问题,参考了一坨又一坨的资料,用了将近一整天的时间,终于搞定了。直接上干货: 照着QT官方文档提供的方法(按F1),进行mysql数据库的连接: [cpp] view plain copy QSqlDatabase db = QSqlDatabase::ad
2017-09-11 19:35:11
1756
1
原创 STL容器知识点总结(面试用)
vector:动态增加大小,每一次扩容都以原大小的两倍另外配置一块较大空间,然后将原内容拷贝过来,接着才开始在原内容之后构造新元素,并释放原vector。由上,所以对于vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了。list:插入和接合操作都不会造成原有的list迭代器失效,删除的话,只是影响被删除元素的迭代器失效;list是一个环状双向链表,只...
2020-02-09 14:12:18
573
原创 2019华为春季实习生招聘重庆站面经-C++软件
面试总共进行了一整天,被安排在了下午一点半场次,接近面试时间时先签到,然后投影上会显示待面试的名单。进去后先是技术面,一个大厅,和分配的面试官一对一,没有自我介绍,下载的华为简历递上去,问了下研究生数模国赛获奖比例,介绍项目,聊得也不是很深入,感觉面试官并不是一线做技术的,所以问的问题真是很少,,后面看到简历上有写有过IT软件开发经验,就让我打开GitHub链接,然后边看,边问了几个问题,数据库查...
2018-12-21 16:40:38
721
原创 2018年百度秋季招聘C++开发工程师笔试编程题一
题意为从一个乱序数组中,将其中的整数按照出现的频次多少来排列(并且出现几次就排列几个),比如输入为[1,2,1,2,3,3,1,6,4,4,4,4],那么输出就应该为[4,4,4,4,1,1,1,2,2,3,3,6],其中,如果某两个数字的出现频次相同,那么就按照输入用例中的原顺序排列。解题代码如下:int get_max_num_index(int* array, int length)...
2018-09-14 21:05:45
1568
原创 数组中找出出现次数超过一半的数
剑指offer中的题目,利用快速排序的partition函数进行解决,代码如下class Solution {public: int partition(vector<int> numbers,int p,int r) { //当遇到特殊的输入情况时候,要和面试官沟通,究竟应该返回值取到什么 int x=numbers[r]; ...
2018-07-19 21:37:11
563
原创 死锁面试题
(1)为什么会产生死锁?产生死锁有什么条件?由于系统中存在一些不可剥夺资源,而当两个或两个以上的进程占有自身资源,并请求对方资源时,会导致每个进程都无法向前推进,这就是死锁。死锁产生的必要条件有四个:互斥条件、不可剥夺条件、请求与保持条件、循环等待条件。互斥条件指进程要求分配的资源是排他性的,即最多只能同时给一个进程使用。不剥夺条件是指进程在使用资源完毕之前,资源不能被强行夺走。请求并保持条件是指...
2018-07-01 20:18:27
2172
原创 Linux文件软链接与硬链接的联系和区别
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode 。软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,但删除原来...
2018-06-30 16:23:23
277
原创 where 子句和having子句中的区别
1.where 不能放在GROUP BY 后面2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE3.WHERE 后面的条件中不能有聚集函数,比如SUM(),AVG()等,而HAVING 可以 Where和Having都是对查询结果的一种筛选,说的书面点就是设定条件的语句。下面分别说明其用法和异同点。注:本文使用字段为oracle数据库中...
2018-06-14 19:53:03
2599
原创 #ifndef的用法
作用:防止头文件的重复包含和编译 定义 #ifndef x #define x ... #endif 这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的一种----条件编译。 C语言在对程序进行编译时,会先根据预处理命令进行“预处理”。C语言编译系统包括预处理,编译和链接等部分。 ...
2018-06-13 21:07:06
20619
2
原创 Gdb的用法
gdb 的用法在Linux应用程序开发中,最常用的调试器是gdb,它可以在程序中设置断点、查看变量值、一步一步跟踪程序的执行过程。利用调试器的这些功能可以方便地找出程序中存在的非语法错误。一、启动和退出gdbgdb调试的对象是可执行文件,而不是程序的源代码。如果要使一个可执行文件可以被gdb调试,那么在使用编译器gcc编译程序时需要加入-g选项。-g选项告诉gcc在编译程序时加入调试信息,这样才可...
2018-05-31 16:15:20
498
原创 求平方根(根号n)的两种算法——二分法和牛顿迭代
面试阿里口碑的时候遇到了这个问题,这里做个笔记1.二分法#define eps 0.00001float SqrtByDichotomy(float n){ if (n < 0) { return -1.0; } else { float low, up, mid, last; low = 0, up = (n>=1?n:1); mid = (low + ...
2018-03-23 15:13:51
12928
原创 是否能在构造函数,析构函数中抛出异常?
最近在工作中,接触到两次这个问题,一次是与Manager的每月一次交流中,Manager问我这个问题,当时回答得支支吾吾;另外一次是《Code View》学习小组会上,同事问到过这个问题。所以索性整理下来,以便自己明确。 首先是析构函数。一. 析构函数 参照《Effective C++》中条款08:别让异常逃离析构函数。 总结如下: 1. 不要在析构函数中抛出异常!虽...
2018-03-22 17:01:05
383
原创 c\c++中比较两个字符串或string对象是否相等
c\c++中比较两个字符串或string对象是否相等 在写程序的过程中,经常会遇到要比较两个字符串是否相等的情况。如果要比较的对象是char*字符串,则利用int strcmp(const char* s1,const char* s2) 当s1<s2时,返回为负数; 当s1==s2时,返回值= 0; 当s1>s2时,返回正数。 ...
2018-03-15 14:50:21
4477
原创 2018腾讯音乐暑期实习内推面试(一面)
3.22更,,,//华丽丽的吐槽分割线////////////////////////////////////////////////////////////////////////////////撸代码的过程中一个深圳定位的座机打过来,吓一激灵。。。问了不到二十分钟,,,问题列一下吧。。。“我先做个自我介绍吧”,,“不用了,这有简历,直接问问题了”。。快速排序介绍下,时...
2018-03-09 20:55:12
4406
原创 条件指示符:#ifndef
条件指示符#ifndef 的最主要目的是防止头文件的重复包含和编译。了解:条件编译当然也可以用条件语句来实现。 但是用条件语句将会对整个源程序进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段1或程序段2,生成的目标程序较短。如果条件选择的程序段很长,采用条件编译的方法是十分必要的。...
2018-03-08 09:59:07
344
原创 深入理解C++中public、protected及private用法
初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。这里我们首先要明白下面几点。1.类的一个特征就是封装,public和private作用就是实现这一目的。所以:用户代码(类外)可以访问p...
2018-03-02 09:58:04
1108
原创 HTTP协议超详细干货
HTTP简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于19...
2018-03-01 15:08:43
377
原创 排序算法总结
1.冒泡排序法void bubble_sort(int data[]){ for(int i=n-1;i>=0;--i) { int flag=0; for(int j=0;j<i;++j) { if(data[j+1]<data[j]) { int tmp; tmp=data[j]; data[j]=data[j+1]; ...
2018-03-01 11:10:46
199
原创 为什么Dijkstra算法不能处理带负权边的图
Dijkstra算法在运行过程中维持的关键信息是一组节点集合S,从源节点s到该集合中每个节点之间的最短路径已经被找到。算法重复从节点集合V-S中选择最短路径估计最小的节点u,将u加入到集合S,然后对所有从u出发的边进行松弛操作。当把一个节点选入集合S时,即意味着已经找到了从源点到这个点的最短路径,但若存在负权边,就与这个前提矛盾,可能会出现得出的距离加上负权后比已经得到S中的最短路径还短。(无法回...
2018-02-22 11:10:48
12120
2
原创 C++函数指针、函数对象与C++11 function对象对比分析
1.函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针主要由以下两方面的用途:调用函数和用作函数参数。函数指针的声明方法数据类型标志符 (指针变量名) (形参列表); 一般函数的声明为: int func ( int x ); 而一个函数指针的声明方法为: int (*fu
2018-02-04 13:20:00
1887
转载 细说new与malloc的10点区别
前言几个星期前去面试C++研发的实习岗位,面试官问了个问题:new与malloc有什么区别?这是个老生常谈的问题。当时我回答new从自由存储区上分配内存,malloc从堆上分配内存;new/delete会调用构造函数/析构函数对对象进行初始化与销毁;operator new/delete可以进行重载;然后强行分析了一下自由存储区与堆的区别。回来后感觉这个问题其实回答得不
2018-01-31 15:33:50
177
原创 vector的resize函数和reserve函数
对于C++的vector容器模板类,存在size和capacity这样两个概念,可以分别通过vector的size()和capacity()方法获得该vector当前的size和capacity值。相应的,vector提供了两个方法来分别对size和capacity进行操作,它们就是resize方法和reserve方法。首先,对于size和capacity,这是两个比较容易混淆
2018-01-17 11:01:15
321
原创 C++(虚)继承类的内存占用大小
首先,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 因此,如果用sizeof运算符对一个类型名操作,那得到的是具有该类型实体的大小。计算一个类对象的大小时的规律:1、空类、单一继承的空类、多重继承的空类所占空间大小为:1(字节,下同);2、一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的;3、因此一个对象的大小
2018-01-16 21:19:17
462
原创 LeetCode76 Minimum Window Substring(两种解法)
Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).For example,S = "ADOBECODEBANC"T = "ABC"Minimum window is "BANC"
2018-01-13 16:05:31
629
原创 C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do
2017-12-22 15:27:10
179
原创 排序算法详解【归并排序-Merge_Sort】
核心思想:分治。主题流程:先将一个序列分成很多个不能再分割的子序列,将各个子序列分别排序后再将子序列合并。其实就是重复两个步骤:【1】分【2】合并。首先是第一个小问题,怎么分?比如说一个序列:12 ,23,1,44,233,10,9,8。我们先分成两段:12 ,23,1,44 和 233,10,9,8,发现还能再分成4段:12 ,23 和 1,44------233
2017-12-16 16:08:07
348
原创 二叉树的递归遍历(思路简单清晰)
预先建立用数组表示的二叉树的内容,然后建立二叉树,并进行前序、中序、后序遍历的操作,代码如下:#include#includeusing namespace std;class tree {public: int data; class tree *left, *right;};typedef class tree* btree;btree create_tree(btre
2017-12-14 11:31:19
2030
原创 算法导论第三版第十章 单链表实现栈和队列(思路简单清晰)
1.单链表实现栈虽然以数组结构来实现栈的好处是算法设计简单,但如果栈的大小可改变的话,由于数组的大小需事先声明,这时必须使用最大可能性的数组空间来考虑,这样会造成内存空间的浪费。而利用链表来实现栈的优点是随时可以动态改变链表长度。代码如下:#include#include#includeusing namespace std;class listnode {public: in
2017-12-09 10:35:29
488
原创 为什么函数声明和定义中的一维数组形参无须写明元素数目
因为函数并不为数组参数分配内存空间。形参只是一个指针,它指向的是已经在其他地方分配好内存的空间,这个事实解释了为什么数组形参可以与任何长度的数组匹配——它实际传递的只是指向数组第一个元素的指针。
2017-12-08 20:50:17
1234
原创 算法导论第三版第七章课后答案
7.1-1 参照图7-1的方法,说明PARTITION在数组A={13,9,9,5,12,8,7,4,21,2,6,11}上的操作过程。A={13,19,9,5,12,8,7,4,21,2,6,11} ={13,19,9,5,12,8,7,4,21,2,6,11} ={13,19,9,5,12,8,7,4,21,2,6,11} ={9,19,13,5,12
2017-12-07 10:22:20
3575
原创 生成范围在[a,b]之中的随机整数
生成a到b之间的随机数==>int i = rand()%(b-a) + a;原理:对于任意整数a,b有:0 于是:0+a 即:a
2017-12-07 10:16:01
2849
原创 算法导论第三版第七章快速排序(一般和随机化版本)
快速排序是利用交换操作的排序,所以不是稳定排序法,最快及平均时间复杂度为O(nlogn),最坏为O(n*n)。步骤:(1)分解:数组A[p...r]被划分为两个子数组A[p...q-1]和A[q+1...r],使得A[p...q-1]中的每一个元素都小于等于A[q],而A[q]也小于等于A[q+1...r]中的每个元素。(2)解决:通过递归调用快速排序,对于子数组A[p...q-1]和
2017-12-07 10:07:47
625
原创 堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2017-12-05 20:16:13
155
2018华为软件精英挑战赛复赛代码 by java()
2018-05-03
2018华为软件精英挑战赛初赛代码85分版本基于C
2018-05-03
基于qt的截图工具,实现截图后进行多种编辑,采用仿QQ截图控制面板
2017-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人