自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 Linux基础——makefile编写

Makefile基本原则和原理makefile中的三要素:目标、依赖、命令 目标:要生成的目标文件(在Makefile中会把第一个目标作为终极目标,一切以生成终极目标为最终目的) 依赖:生成目标文件需要的一些文件 命令:借助依赖文件生成目标文件的手段工作原理:要生成终极目标,先检查依赖条件是否都具备,如果有依赖条件不存才则再寻找新的规则来生成依赖条件Makefile的...

2018-07-05 10:58:54 3997

原创 Linux基础——gdb调试

启动gdb调试生成可执行文件之前必须加参数 -ggcc hello.c -o hello -ggdb hello 启动调试gdb相关命令 参数 用途 l 列出文件代码清单 l + 行号n 从第n行开始显示代码 b + 行号n + 条件(if i==5) 在第n行设置断点只有i=5时生效 r 运行程序 di...

2018-07-04 10:57:01 337

原创 Linux基础——gcc编译、静态库与动态库(共享库)

gcc编译器1、gcc工作流程 2、gcc常用参数 参数 用途 -v 查看版本 -o 产生目标文件 -I+目录 指定头文件目录 -D 编译时定义宏 -00/-01/-03 没有优化/缺省值/优化级别最高 -Wall 提示更多警告信息 -c 只编译子程序 -E 生成预处理文件...

2018-07-03 17:44:34 35654 7

原创 Linux基础——vim基本操作

vim工作模式命令模式 – 打开文件之后, 默认进入命令模式编辑模式 – 需要输入一些命令, 切换到编辑模式末行模式 – 在末行模式下可以输入一些命令命令模式下的操作1、移动光标2、删除操作 3、撤销操作u:一步一步撤销 ctrl+r:反撤销4、复制粘贴操作 5、可视模式操作 6、查找操作 7、替换操作 r:替换当前字符8、查...

2018-07-02 11:26:05 369 1

原创 c语言进阶——文件读写

文件的打开fopen()文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名文件存在,则删除该文件,若无同名文件,则...

2018-06-21 17:05:34 382

原创 c语言进阶——结构体专题

结构体类型定义及变量定义1、定义结构体类型变量的三种方式//用类型定义变量的方法3种//第一种:定义类型的同时定义变量struct Student{ char name[64]; int age;}s1, s2;//第二种:使用结构体类型定义变量typedef struct Student{ char name[64]; int age;...

2018-06-21 09:30:06 272

原创 c语言进阶——多维数组本质及指针数组的应用分析

多维数组的本质一维数组int a[10]在做函数参数时会退化为指针int *a,但是二维指针做函数参数时却不能写成二级指针,那么二维数组的本质到底是什么,可以通过代码来验证。 int a[3][5], i=0, j=0;//定义一个3*5的二维数组 int tmp = 1; for (i=0; i<3; i++) { for (j...

2018-06-12 15:00:13 284

原创 c语言进阶——数组类型与数组指针

数组基本概念元素类型角度:数组是相同类型的变量的有序集合 内存角度:连续的一大片内存空间数组的初始化//数组元素的个数可以显式或隐式指定//数组初始化可以使用{0}或memeset两种方式 void main(){ int a[] = {1, 2}; //隐式指定元素个数 int b[100] = {1, 3};//显式指定元素个数 in...

2018-06-10 11:59:05 214

原创 c语言进阶——多级指针内存模型

多级指针内存模型(以三级指针为例)指针的最大作用:间接赋值 推论:n级指针形参可以间接改变n-1及指针实参的值 三级指针作用:通过函数参数来为二级指针分配内存,间接赋值,回收内存//为二级指针分配内存 int getMem(char ***p3 , int num){ int i = 0; char **tmp = NULL; if (p3 == NU...

2018-06-08 15:17:45 282

原创 c语言进阶——二级指针内存模型

二级指针输出模型//指针做输出:被调用函数分配内存//指针做输入:主调用函数分配内存//求文件中的两段话的长度int getMem(char **myp1, int *mylen1, char **myp2, int *mylen2){ char *tmp1 = NULL; char *tmp2 = NULL; tmp1 = (char *)malloc(1...

2018-06-08 14:58:28 238

原创 c语言进阶——字符串和一级指针内存模型

字符串基本操作在C语言中使用字符数组来模拟字符串C语言中的字符串是以’\0’结束的字符数组C语言中的字符串可以分配于栈空间,堆空间或者只读存储区1、字符数组初始化 //1 指定长度初始化 char buf2[100] = {'a', 'b', 'c', 'd'}; //如果初始化的个数大于内存的个数 编译错误 //后面的buf2[4]-b...

2018-06-07 16:05:24 217

原创 c语言进阶——指针概述

指针是一种数据类型1、指针也是一种变量,占有内存空间,保存内存地址2、*p操作内存在指针声明时,*号表示所声明的变量为指针在指针使用时,*号表示操作指针所指向的内存空间中的值*p相当于通过地址(p变量的值)找到一块内存;然后操作内存*p放在等号的左边赋值(给内存赋值)*p放在等号的右边取值(从内存获取值)3、指针变量和它指向的内存块是两个不同的概念给p赋值p=&a...

2018-05-31 15:09:49 674

原创 c语言进阶——函数调用模型

函数调用模型分析fb在栈上分配的内存空间,不能被fa和main使用fb在堆上分配的内存空间,可以被fa和main使用fb在静态、全局区分配的内存空间可以被fa和main使用...

2018-05-30 10:41:11 425

原创 c语言进阶——程序的内存四区

内存四区的建立流程流程说明 1. 操作系统把物理硬盘代码load到内存 2. 操作系统把c代码分成四个区 3. 操作系统找到main函数入口执行内存四区元素分析静态存储区理解char * getStr1(){ char *p1 = "abcdefg2"; return p1;}char *getStr2(){ char *p2...

2018-05-30 10:07:16 313

原创 c语言进阶——变量本质分析

变量本质分析变量的本质是一段连续内存空间的别名,程序通过变量来申请和命名内存空间。可以把变量理解为访问 内存的“门牌号”,对变量进行读写操作并不是往变量中读写数据,而是通过变量这个“门牌号”来操作内存。修改变量的几种方法直接修改间接修改(通过内存地址进行修改)——指针的产生 int a; //直接赋值 a = 10; //a的地址为1...

2018-05-27 17:24:43 197

原创 c语言进阶——数据类型本质分析

数组做函数参数的退回问题当数组做函数形参时,数组会退回为一个指针变量 下面用一个例子给出一个简单的证明void sortArray(int a[], int num){ int i, j, tmp; int num2 = 0; num2 = sizeof(a)/sizeof(a[0]); printf("num2:%d \n", num2); ...

2018-05-27 16:56:45 196

原创 链表专题—LeetCode 21. Merge Two Sorted Lists

题目链接LeetCode 21. Merge Two Sorted Lists题目描述Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.Exampl...

2018-05-18 11:08:15 222

原创 链表专题—LeetCode 19. Remove Nth Node From End of List

解题思路第一种方法: 1、计算出链表的长度len 2、根据给出的倒数第n个结点计算出结点要移动的次数第二种方法(最优): 1、创建指针curr,p指向头结点 2、将curr移动n个位置,此时curr与p的距离即为n 3、将curr和p依次后移,当curr移动到链表尾部时,p所指的的节点位置即为要删除的结点注意: 1、建议在头结点前设置临时结点,可以方便编写代码 2、当链表...

2018-05-18 10:42:49 110

原创 链表专题—LeetCode 2.Add Two Numbers

解题思路: 1、输入为两个用链表存储的逆序数,输出也为逆序,因此不用将输入转化为正序。 2、从两个链表的头结点开始依次相加,存储到新链表中。 3、注意计算进位。注意: 1、输入数字很大,要使用大数加法进行计算。 2、两个链表可以不一样长。class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListN...

2018-05-17 18:09:47 129

原创 面试经验(6)

1、若PCping不通路由器,要怎样排查故障Ping 127.0.0.1,该地址是本地循环地址,如发现本地址无法Ping通,就表明本地机TCP/IP协议不能正常工作如果上面操作成功,可Ping通的话,我们接下来可以输入IPConfig来查看本地的IP地址,然后Ping该IP,通则表明网络适配器工作正常,不通则是网络适配器出现故障然后Ping一台同网段计算机的IP,不通则表明网络线路出现故...

2018-03-18 22:49:02 215 2

原创 面试经验(5)

1、编译型语言和解释性语言的区别 编译型语言在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言就不用再进行翻译了。解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编C/C++ 等都是编译型语言,而Java,C#等都是解释型语言。2、动态链接库和静态链接库 静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动...

2018-03-13 23:40:01 140

转载 面试经验(4)—A*算法

http://blog.vckbase.com/panic/archive/2005/03/20/3778.html A*寻路初探原文:Patrick Lester翻译:Panic 2005年3月18日 原文出处:A* Pathfinding ...

2018-03-13 09:57:51 1385

原创 面试经验(3)—位运算技巧

位运算基本操作总结1、左移操作符 将A的二进制表示的每一位向左移B位,左边超出的位截掉,右边不足的位补0 A = 1100 B = 2 A << B = 1100002、右移操作 A >> B C语言:只有逻辑右移 A >> B 逻辑右移:将A的二进制表示的每一位向右移B位,右边超出的位截掉,左边不足的位补0。 A >> B...

2018-03-12 22:37:24 137

原创 面试经验(2)——数据库专题(1)

数据库相关面试题总结1、关系型数据库与非关系型数据库的区别关系型数据库通过外键关联来建立表与表之间的关系,非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定,关系型数据库的扩展性差2、常用基础SQL语句创建数据库CREATE DATABASE database-name删除数据库drop database d...

2018-03-11 23:56:02 161

原创 tensorflow笔记(3)

可视化import matplotlib.pyplot as pltfig = plt.figure()ax = fig.add_subplot(1, 1, 1)ax.scatter(x_data, y_data) #显示散点图plt.ion() #打开交互模式##绘画相关代码plt.ioff()#关闭交互模式plt.show()如果显示一张图可以直接调用plt.show...

2018-03-11 19:20:45 119

转载 pycharm中使用tfdebugger及常见问题

环境Windows10,Anaconda3。错误:curses问题去这里下载相应的库:https://www.lfd.uci.edu/~gohlke/pythonlibs/#curses利用pip install 安装,见下图:pip install安装时遇到的问...

2018-03-11 15:26:17 1194

原创 面试经验(1)

今天去了腾讯面试,面试的是两个师兄,感觉很和蔼,环境也很随和,但是自己的表现并不是特别的完美,面试官好像并不是特别满意。为了积累经验,以后能做到更好,在这里把问题记录下来,为以后做准备。1、求逆序数对(使用归并排序)2、单链表翻转(原有链表)3、引用与指针区别4、虚函数表 只要我们在类中定义了virtual函数,那么我们在定义对象的时候,C++编译器会在对象中存储一个v...

2018-03-08 23:51:24 201

原创 动态规划专题—最大连续子序列和—A1007

最大连续子序列和问题如下给定一个数字序列A1,A2,…,An,求i,j(1<=i<=j<=n),使得Ai+….+Aj最大,输出这个最大和。 样例:-2 11 -4 13 -5 21、令状态dp[i]表示以A[i]为结尾的连续序列的最大和,则dp[0] = -2,dp[1] = 11,dp[2] = 7,dp[3] = 20,dp[4] = 15,dp[5] ...

2018-02-26 12:04:39 873

原创 算法初步—贪心—A1038

思路: 给出一堆数字字符串,问怎样组合可以得到最小值。仔细观察可以发现只要按字典序排序,好像可以大致满足要求,但是字典序排序是有缺陷的比如32和321字典排序的结果为32321,而实际上32132是最小的,因此我们得出了贪心策略。策略: 将字符串a和字符串b相加,比较a+b和b+a,返回值更小的那一个注意: 当字符串全为0时,输出0#include <iostream&...

2018-02-11 23:20:16 147

原创 算法初步—贪心—A1067

#include <iostream>#include <cstdio>using namespace std;int main(){ int N; int num[100005]; scanf("%d", &N); int left = 0; for (int i = 0; i < N; i++) {...

2018-02-11 23:00:02 170

原创 算法初步—贪心—A1037

思路: 本题比较简单,直接用最大正值相乘和最小负值相乘即可#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int main(){ int nc,np,sum=0; int c[100005],p[100005]; scanf(...

2018-02-09 21:45:52 115

原创 算法初步—贪心—A1033

思路: 本题是典型的贪心问题,想要用最少的钱行驶完全程,只需要每次选择最便宜的加油站,加最多的油即可。1、判断在最大距离范围内下一个站点A是否比当前站点便宜 2、若满足1,则只加刚好到A的油量,重复1 3、若最大距离范围内油价都比当前高,则在当前把油量加满(若可直接到达终点则无需加满) 4、选择剩下站点中最便宜的站点B,重复1注意点: 1、除了加油站数量外,全都为浮点类型 2、...

2018-02-08 22:09:55 124

原创 算法初步—贪心—A1070

思路: 1、根据每个不同的月饼价格计算出每个月饼的单价,根据单价进行排序,不断选择最贵的月饼出售即可注意点: 月饼的数量是浮点类型,否则会报错#include#include#include#includeusing namespace std;struct MoonCake{ float num; //月饼数量 float p

2018-02-05 18:12:21 130

原创 算法初步—贪心—基本贪心问题详解

1、区间不相交问题描述:给出N个开区间(x,y),从中选择尽可能多的开区间,使得这些开区间两两没有交集。如给出区间(1,3),(2,4),(3,5),(6,7)贪心策略: 很容易想到,如果我们想让N个区间中的子区间越多越好,那么肯定子区间的长度越短越好,这样才能有更大的剩余空间留给其它空间,如果一个区间就占了(1,3),这显然不是我们愿意看到的。所以怎么不断的选择最小的区间呢,我们可

2018-02-02 17:38:11 228

原创 算法初步—散列—A1048

思路: 运用散列的思想,记录不同面值的硬币数,再从1遍历寻找两个硬币即可注意: 当出现两个相同面值硬币的和恰好等于需要钱数的时候,要注意判断数量是否>=2,如7+7=14#include#include#include#includeusing namespace std;int main(){ int N,M,hash[1005]={0},coin; sc

2018-01-31 16:25:01 156

原创 算法初步—散列—A1050

思路: 采用hash的思想,记录要删去的字符,输出时跳过这些字符即可#include#include#include#includeusing namespace std;int main(){ char s1[10005],s2[10005]; int hash[128] = {0}; gets(s1); gets(s2); int n1

2018-01-31 15:01:34 119

原创 算法初步—散列—A1041

这道题比较简单,直接运用散列的思想即可轻松解决#include#include#include#includeusing namespace std;int main(){ int N,hash[10005]={0},bet[100005]; scanf("%d",&N); for(int i=0;i<N;i++) { scanf("

2018-01-31 12:10:14 125

原创 算法初步—散列—A1092

思路: 1、引入一个hash数组来对应字符串字符和数量 2、统计超市已有的各个颜色数量 3、根据要求的各颜色数量,判断是否符合条件以及缺少多少#include#include#include#includeusing namespace std;int main(){ char s1[1005],s2[1005]; int hash[200] = {0};

2018-01-31 11:41:25 115

原创 算法初步—散列—A1084

思路: 1、同时遍历两个字符串,出现不相等则说明有残缺键位 2、建立hash数组,将字符与是否统计过映射起来注意点: 1、英文字母统一输出为大写字母#include#include#includeusing namespace std;int main(){ char s1[100],s2[100]; int hash[200] = {0}; sca

2018-01-31 11:19:56 123

原创 算法初步—排序—A1095

思路: 1、建立记录结构体,储存停车场的停车记录 2、建立一个map结构,将车辆与停车时间对应起来 3、对所有机构进行排序,排序规则相对车牌进行字典排序,再对相同车辆的进出时间进行升序 4、遍历排序好后的记录结构体数组,则相同车牌的状态为in则下一个必须为out,依据此原则取出无效记录,有效记录存放在valid中,同时更新车辆的停车时间和最长停车时间 5、对valid数组依据时间进行排序

2018-01-31 00:29:24 166

空空如也

空空如也

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

TA关注的人

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