自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图论算法

问题1、图的邻接矩阵表示法#define MAXSIZE 100 //定义最大顶点个数typedef char VertexType; //顶点的类型struct Graph{ VertexType Vertex[MAXSIZE]; //顶点 int AdjMatrix[MAXSIZE][MAXSIZE];//两个顶点之间的权重 int vexnum; /

2016-09-05 14:38:24 670

原创 数组求和相关算法

问题1、输入一个数组,在数组中查找两个数,使得它们的和正好是targetvoid FindTwoSum(int a[],int n,int target){ sort(a,a+n); int sum=0; int i=0; int j=n-1; while(i<j){ sum=a[i]+a[j]; if(sum==target)

2016-09-04 18:54:21 2198

原创 剑指offer-动态规划算法

问题1、连续子数组的最大和//给定数组{1,-2,3,10,-4,7,2,-5},则连续子数组的的最大和范围为{3,10,-4,7,2}//解法一、直接写int FindGreatestSumOfSubArray(int a[],int n){ int sum=0; int temp=0; for(int i=0;i<n;i++){ if(sum<=0){

2016-09-04 15:33:58 520

原创 数组相关算法

问题1、打印1到最大的n位数//解法一、直接求出n位数的最大值,然后直接从1开始打印//缺陷:可能会溢出,大数问题void Print1toMax(int n){ int num=1; while(n>0){ num*=10; n--; } for(int i=1;i<num;i++){ cout<<i<<" ";

2016-09-03 21:10:03 313

原创 剑指offer-位运算

在对unsigned类型的无符号值进行右移位时,左边空出的部分用0补齐,而对于带符号值移位左边用符号位补齐。 问题1.实现函数getbits(unsigned x,int p,int n),返回x中从右边数第p位开始向右数n位的字段。例如get(x,4,3),返回x中第4,3,2位的值.unsigned getbits(unsigned x,int p,int n){ //x=10111

2016-09-03 17:30:20 291

原创 斐波那契数组的算法应用总结

1、爬楼梯问题:青蛙可以跳上一级台阶,也可以跳上两级,求该青蛙跳上一个n级的台阶共有多少种跳法。 思路:没有台阶是0种,1级台阶是1种,2级台阶是3种。把n级台阶的跳法看成是n的函数f(n)。第一次跳的时候又两种选择:一次是跳一级,此时的跳法是前面n-1级台阶的跳法数目f(n-1);另一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶跳法数目f(n-2)。所以,f(n)=f(n-1)+

2016-09-03 15:45:35 1245

原创 剑指offer-递归和循环

递归虽然比较简洁,但他同时也有显著的缺点。递归由于是函数调用自身,而函数调用是有时间和空间的消耗的,每一次函数调用都需要在内存栈中分配空间以保存参数、返回地址及临时变量,而且往栈里压入数据和弹出数据都需要时间。 1、 斐波那契数列 0,1,1,2,3,5,8,13 …//递归 缺陷:重复计算的太多int Fib(int n){ if(n==0)

2016-09-03 15:13:37 177

原创 剑指offer-排序算法

十大排序算法自主手写代码: 1、冒泡排序 时间O(N^2),空间O(1),稳定,数据有序效果越好void BubbleSort(int a[],int n){ int flag=1; for(int i=1;i<n&&flag;i++){ flag=0; //表示有序 for(int j=1;j<n-i+1;j++){

2016-09-01 12:37:56 317

原创 剑指offer-查找

问题1、二分查找//注意:二分查找的前提是数组基本有序int BinarySearch(int a[],int low,int high,int key){ while(low<=high){ int mid=low+(high-low)/2; if(a[mid]==key) return mid; e

2016-08-30 19:48:02 219

原创 剑指offer-队列和栈操作

问题1、两个栈实现队列class Queue{public: //入队 void Push(const int value){ s1.push(value); } //出队 int Pop(){ while (s1.size()) { s2.push(s1.top());

2016-08-30 17:55:39 187

原创 剑指offer-树

#include<iostream>#include<algorithm>#include<queue>#include<stack>using namespace std;struct BinaryTreeNode{ int data; BinaryTreeNode *left; BinaryTreeNode *right;};BinaryTreeNode

2016-08-30 13:09:55 237

原创 剑指offer-链表

单向链表的结构定义typedef int DataType; struct ListNode{ DataType value; ListNode *next;}问题1、往链表的末尾添加一个结点//给定头结点,往末尾插入一个结点void InsertNode(ListNode **head,DataType key){ ListNode *q=new ListNode;

2016-08-29 22:23:34 455

原创 C++ 内存对齐问题

C和C++不同:在C中struct/class不占有内存,C++中,struct/class通常占有1byte,原因是编译器强 行在里面放了一个char,这样可使这个class的不同实例化在内存中分配到独一无二的地址 1、最基本的内存对齐情况 首先确定最大类型的大小->按照结构体中类型声明顺序来分配空间。 eg1. struct A

2016-08-29 14:57:57 340

原创 浅谈MFC-1

MFC(微软基础类)是一种应用程序框架,定义了应用程序的一般处理流程,用于对Windows API实现基于面向对象技术的封装,隐藏在Windows下使用C++编程的大量内部细节。在开发应用程序的过程中,编程人员可以通过对类库中已有类的继承,生成功能更加强大的类库以供自己所用。 1、MFC的类层次结构 2、CView和CDocument的关系3、SendMessage和PostMessage的

2016-08-22 22:40:13 606

原创 操作系统-段式管理

1、段式管理的原理: 分区式管理和页式管理时的进程地址空间结构都是线性的,这要求对源地址进程程序进行编译、链接时,把源程序中的主程序、子程序、数据区等按线性空间的一维地址顺序排列起来。这使得不同作业或进程之间共享共有子程序和数据变得非常困难。 再者,从链接的角度看,分区管理和页式管理只能采用静态链接。一个大的进程可能包含上千个程序模块,对他们链接要花费大量CPU时间,而实际执行时间可能只用到其中

2016-08-22 11:53:38 2326

原创 操作系统-存储管理

存储器是由内存和外存组成。内存由顺序编址的块组成,每块包含相应的物理单元。CPU要启动相应的输入输出设备后才能使外存与内存交换信息。 1、虚拟存储器 存储管理系统吧进程中那些不经常被访问的程序段和数据放入外存中,待需要访问他们时再将他们调入内存。对于那些一部分数据和程序段在内存而另一部分在外存的进程,可用虚拟存储器来安排地址。有两种方法可以安排这些编译后的的目标代码的地址。一种方法是按照物理存储

2016-08-21 22:17:22 1880

原创 操作系统-处理机调度

处理机调度分为4级: 作业调度-》交换调度-》进程调度-》线程调度 1、衡量调度策略的指标 (1)周转时间 周转时间=完成时间-提交时间; (2)带权周转时间 带权周转时间=作业周转时间/作业执行时间 (3)吞吐率 (4)设备利用率,整个过程中某个设备使用的时间/总的时间 2、常用的进程和作业调度算法

2016-08-21 20:47:33 796

原创 操作系统-进程管理

进程:用来描述计算机程序的执行过程和作为资源分配的基本单位,反映操作系统的执行并发、资源共享以及用户随机的特点。 1、进程和程序的区别进程是一个动态概念,而程序则是一个静态概念。程序时指令的有序集合进程具有并发特性(独立性和异步性),而程序没有不同的进程可以包含同一程序,只是该程序对应的数据集不同2、进程的描述 (1)进程控制块PCB 是系统感知进程存在的唯

2016-08-21 20:28:32 256

原创 计算机网络问题总结

1、HTTP协议和HTTPS协议有什么区别 解: (1)https协议需要到ca申请证书,一般免费证书很少,需要交费 (2)http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议 (3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443 (4)http的连接很简单,是无状态的,HTTPS协议是由

2016-08-20 20:16:47 370

原创 计算机网络-应用层

运输层为应用进程提供了端到端的通信服务。但不同的网络应用进程之间,还需要有不同的通信规则。因此在运输层协议之上,还需要有应用层协议。应用进程之间的通信必须遵守严格的规则。应用层的协议应当定义:应用进程交换的报文类型,如请求报文和响应报文各种报文类型的语法,报文中各个字段的详细描述字段的语义,即包含在字段中的意义进程何时、如何发送报文、以及对报文进行响应的规则1、域名系统DNS

2016-08-20 19:32:14 665

原创 计算机网络-运输层

问题一、运输层为相互通信的的应用进程提供逻辑通信 问题二、端口和套接字的意义 问题三、理解UDP和TCP协议 问题四、在不可靠的网络上实现可靠传输的工作原理 问题五、TCP的滑动窗口、流量控制、拥塞控制和连接管理 1、端口 应用层所有的应用进程都可以通过运输层传送到IP层,这就是复用;运输层从IP层收到数据报后必须向上交付给指定的应用进程,这就是分用。在运输层使用协议端口

2016-08-20 16:40:25 1062

原创 计算机网路-网络层

讨论网络通过路由器互连成一个互连网络的问题 关于中间设备的问题:物理层使用的中间设备是转发器数据链路层使用的中间设备是网桥和桥接器网络层使用的中间设备是路由器网络层以上使用的中间设备是网关1、IP地址的分类 IP地址::={<网络号>,<主机号>} 路由器仅根据目的主机所连接的网络号来转发分组,可以使路由

2016-08-19 22:27:36 403

原创 计算机网络-数据链路层

数据链路层介于物理层和网络层之间,在物理层提供的服务的基础上向网络层提供服务,最基本的服务是将源自网络层在的数据可靠地传输到相邻结点的目标机网络层。所以数据链路层的功能是:在局域网中(不通过路由器),分组怎样从一个主机传送到另一个主机??(封装成帧,透明传输,差错检测)1、数据链路层使用的信道点对点信道: 一对一的点对点的通信方式 网络适配器实现了相关通信协议加到物理链路上就构成了

2016-08-19 11:28:10 537

原创 华为OJ之漂亮度

知识点:map pair vector string 1.map容器的相关操作map<string,int> ismap; //map定义变量,每个key唯一,value可以不同string word;while(cin>>word){ map[word]++; //有计数的功能}//1.关联容器的初始化赋值操作map<string,int> ism

2016-08-10 18:25:03 336

原创 华为OJ训练一

1 问题描述: 我们知道人民币有1,2,5,10,20,50,100这几种面值,现在给你n(1<=n<=250)元让你计算换成用上面这些面额表示且总数不超过100张,共有几种。比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。 输入有多组,每组一行,为一个集合n,输入以0结束 输出该面值有几种表示方法.输入输出实例:input: 1 4 0

2016-08-10 13:22:33 561

原创 链表逆转和Fib队列(面试题)

问题1 对于链表:A->B->C->D->E->F->NULL;要求将链表逆转struct Node{ char ch; Node *next;};Node *ReverseNode(Node *head){ Node *pre=NULL; Node *p=head; while(p){ Node *next=p->next; //必

2016-08-09 16:49:59 404

原创 华为OJ相关算法

1、合唱队问题 给定一个身高数组,从里面抽出若干人之后,使之保持身高由小到大,再从大到小的合唱队队形,求出至少出队的人数! 解题思路:必须得考虑清楚每一个位置左边递增的人数和右边递减的人数,两者的最大和即为最长的合唱队人数。所以可以两次遍历数组,求最长递增(减)子序列即可。关于最长递增子序列的问题我们已经很熟悉了。下面直接码上代码已经相关过程解析。#include<iostrea

2016-08-09 15:09:15 830

原创 递归算法的应用(迷宫)

题目:给定一个m*n的迷宫,找到任意两个点之间的路径!如图所示 这是一个10*10的矩阵,标记为0的代表不可以走,1代表可以走,找出起点(1,1)到终点(8,8)的路径。解题思路:对于任何一个位置(i,j),下一步共有4个方向可以选择,包括向上(i-1,j),向下(i+1,j),向左(i,j-1),向右(i,j+1);走过的点必须标记出来,避免下一次重新走,如果走到某个位置走不通了,必

2016-08-09 10:30:01 2889 1

原创 单例设计模式

设计一个类,只能实现该类的一个实例! 1 使用C++实现一个懒加载的单例class Singleton{public: static Singleton GetInstance(){ if(instance==NULL) instance=new Singleton(); return instance; }private

2016-08-08 23:02:33 180

原创 存储引擎和索引

一.存储引擎 重点内容关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很多种类型的存储

2016-07-27 22:08:05 946

原创 触发器操作

1、作用 我们可以监视某表的变化,当发生某种变化时,触发某个动作 eg。观察以下场景,电子商城有商品表和订单表 需要完成下单和减少库存的逻辑!insert into o(gid,num) values(2,3);update g set goods_num=goods_num-3 where id=2; 用触发器可以解决上述问题!2、触发器语法 四要素:监视事件(insert/up

2016-07-27 21:36:40 297

原创 数据库视图view

视图是原始数据库数据的一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可以看到感兴趣的数据。 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。 由查询结果生成的一张虚表 语法:create view 视图名 as select 语句 删除视图:drop view 视图名;

2016-07-27 21:15:55 516

原创 连接查询和union联合

1、union联合 把两个及以上的查询结果合并 eg、 select id,name,age from php313 where age<80 union select id,name,age from php313 where age>100;要求: 两次查询的列数一致(可以来自于多张表)推荐: 查询的每一列相对应的

2016-07-27 20:57:43 598

原创 数据库一系列查询函数

以表msg为源数据库进行操作 1、whereselect *from msg where id=3;select name,age from msg where id in(3,5); //id=3,id=5的select name,age from msg where id between 3 and 5;(包括边界,3和5之间)select name,age from m

2016-07-27 20:17:24 929 1

原创 数据库常见类型总结

1、类型列表(常用的) tinyint(M) :unsigned时 0-255;有符号时:-128-127 ,M表示显示的长度,不够的用zerofill,M并不影响存储范围float(M,D) M代表精度,总位数,不包含小数点;D是小数位decimal(M,D) 定点,更精确char :定长, char(M),M代表宽度,即可容纳的字符数M<=255 varchar :变

2016-07-27 17:06:25 455

原创 数据库操作(增删改查)

启动:终端运行MySQL: 输入 mysql -u root -p,提示输入密码,是自己设定的,我的是111111 第一步:show databases; 第二步: use 数据库(test) 第三步:show tables; 上述的准备工作做好之后既可以进行数据库的操作。 1.MySQL基本指令操作 创建一个数据库: create ta

2016-07-27 16:42:17 309

原创 HTTP协议和XMPP协议

应用层协议:每个应用层的都是为了解决某一类应用问题。而问题的解决又必须通过位于不同主机中的多个应用进程之间的通信和协同工作来完成。应用进程之间必须遵守严格的规则。应用层协议应当定义如下几个:应用进程之间交换的报文类型,如请求报文和响应报文报文中各个字段及其详细描述包含在字段中的信息的含义进程何时、如何发送报文,以及对报文进行响应的规则1.HTTP协议 万维网使用统一资源定位符URL来标志

2016-07-26 19:01:59 10867

原创 Svn与Git的区别总结

1.最核心的区别是Git是分布式的,Svn不是。Git跟Svn一样有自己的集中式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项目分支等操作,等网络再次连接上Push到Server端。2.Git把内容按元数据方式存储,而SVN是按文件:因为,.git目录是处于你的机

2016-07-24 22:27:46 486

原创 第一个OC程序解析

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"dajiajioap"); //自动换行 NSLog(@"Hello, World!")

2016-07-24 16:50:19 298

原创 Objective-C概述

OC是一门面向对象的语言,而且会比C++简单很多。因为OC是基于C语言的,所以完全兼容C语言,也就是说我们在开发iOS程序过程中,可以在OC代码中混入C语言代码,甚至是C++代码。 1.语法特点 (1)没有包名(java)和命名空间(C++) 没有包名(java)和命名空间(C++)的概念,取而代之的是开发人员给类名加上前缀,使用前缀可以有效的防止类名冲突。比如NSString(OC中的字符

2016-07-24 16:40:55 269

空空如也

空空如也

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

TA关注的人

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