自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Python_programer的博客

欢迎大家的阅览,不对的地方,欢迎指正,共同进步!

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

原创 回溯之N皇后问题

问题及要求:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n-queens...

2019-08-02 13:26:27 289

原创 dp(动态规划)之最长公共子序列

今天分享一道比较典型的dp问题:问题描述:我们有两个字符串m和n,如果它们的子串a和b内容相同,则称a和b是m和n的公共子序列。子串中的字符不一定在原字符串中连续。例如字符串“abcfbc”和“abfcab”,其中“abc”同时出现在两个字符串中,因此“abc”是它们的公共子序列。此外,“ab”、“af”等都是它们的字串。现在给你两个任意字符串(不包含空格),请帮忙计算它们的最长公共子序列...

2019-07-25 17:51:18 573 2

原创 简易版扑克牌程序

大家好今天分享一道题,实现一个简易版的扑克牌程序:题目:扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用"-“连接,每手牌的每张牌以空格分隔,”-"两边没有空格,...

2019-06-06 11:32:04 2885 1

原创 C++ 模板

今天讲下C++模板这一块的基础内容:模板:(1)函数模板(2)类模板1.泛型编程在讲C++模板之前必须得说一下泛型编程泛型编程就是指编写与类型无关的通用代码,是代码复用的一种手段,模板是泛型编程的基础!比如想实现两个数的交换:用我们之前所知道的方法就是函数重载,这是可以的,但是你想过没有,如果每来一个类型你就需要写一个对应类型的函数,这样不仅代码的复用率极低,效率低,而且代码的可维...

2019-05-27 10:21:07 1645

原创 Linux之posix信号量

今天来讲下POSIX信号量,用于同步操作,达到无冲突的访问共享资源的目的,可以用于线程间同步。信号量就是一个计数器+等待队列+等待+唤醒1.信号量的基本接口1)初始化信号量int sem_init(sem_t *sem, int pshared, unsigned int value);sem:信号量变量pshared:0表示线程间共享,非0表示进程间共享(决定用于线程间还是进程间)...

2019-05-22 15:48:40 378

原创 Linux之生产者与消费者模型

今天讲下Linux里一个很重要的概念 “生产者与消费者模型” :1.生产者与消费者模型的概念生产者于消费者模型其实很常用,因为在实际开发中经常会遇到这种情况就是,一个模块负责生产数据,而另一个模块负责处理数据,在这里就可以认为这个生产数据的模块就充当了生产者的角色而这个处理数据的模块就充当了消费者的角色,而生产者生产的数据需要一个地方存储,就可以是一个仓库,这个仓库是练习生产者与消费者的...

2019-05-22 15:09:24 525

原创 C++实现日期类

初步学习了类和对象后,为了能学以致用,我想用类和对象实现一个日期类,能实现日期的一些计算方法!1.功能1)日期的大小判断2)日期变化的日期加减天数3)计算两个日期间隔天数4)日期变化的日期加减天数2.实现代码我把接口的声明和类的定义放在了Date1.h文件里:#pragma once#include<iostream>using std::cout;using...

2019-05-21 18:54:17 367

原创 C++类和对象(2)

今天继续讲C++类和对象这块的内容:1.类的6默认成员函数1.1构造函数(无返回值)构造函数是完成初始化工作的而不是创建对象的,这点一定要记清!!!用户没写构造函数的话编译器是会自动生成的,但是用户一旦显式的定义了编译器将不再生成!!!如果有创建多个对象,那么调用构造函数的顺序和你创建对象的顺序是一样的!!!< font>默认构造函数有三类:(默认构造函数就指的是不用参...

2019-05-19 21:52:49 207

原创 Linux之线程安全

上一节我讲了Linux线程的一些基础知识,返现多线程是不安全的,会引发安全问题,所以今天就来讲一下Linux线程安全一节的内容!1.线程安全概念线程安全:多个线程同时操作临界资源不会出现数据二义性2.线程安全的实现这里要引入两个概念:同步与互斥同步:临界资源访问的时序可控互斥:临界资源访同一时间的唯一访问性临界资源:多线程执行流共享的资源原子性:不会被任何调度机制打断的操作,该操作...

2019-05-16 15:46:27 289

原创 C++类和对象(1)

今天讲一下关于C++类和对象的一些知识点:1.类和对象的初识C语言是面向过程的,关注过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。在C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,还可以定义函数。在C++中更喜欢用class来代替。2.类的定义类就是同类事物的抽象集合,而...

2019-05-15 15:44:15 685

原创 结构体内存对齐详解(同比C++类的大小计算)

今天讲下结构体内存对其的问题:因为结构体内存对齐问题算是面试或笔试时的常考问题,所以我选择单独开一篇来讲解一下!!!这个问题我当时是有点懵逼的在看到的时候,不知道是怎么计算出来的。终于经过一段时间我仔细看了计算规则和理解我算是弄明白了计算过程,下面我就来讲一下,有什么不对的也欢迎大家在下面评论指出!1.结构体内存对齐是什么结构体可以存储多种数据类型,这也就意味着结构体的大小不是简单的几个...

2019-05-15 14:58:38 300

原创 Linux之线程(1)

今天讲下Linux线程这块的知识,我想很多人应该都知道多线程的重要性,现在多线程被运用在项目中的次数越来越多,而且面试中多线程也是必问的,所以要引起我们足够的重视将这块的知识学扎实。1.线程的概念在说线程之前我们不得不提到进程,从用户角度来说:进程是运行中的程序;操作系统角度来说:进程是操作系统对运行中程序的描述信息–进程描述符–pcb。线程:在一个程序里的一个执行路线或者说是:线程是一个...

2019-05-14 14:46:36 182

原创 git的安装及linux下git的使用

今天讲下git的使用及linux下git的使用:首先需要创建一个GitHub账号先进入下面的官网(推荐使用Google浏览器)https://github.com/然后创建一个账号(虽然是英文我想这点难度肯定你能看懂吧!)创建完账号并激活后会看到类似如下所示:点击start a project(开始一个项目),然后如下所示:按他的要求逐步输入,创建一个仓库来存放你以后的代码,这就...

2019-05-13 10:48:32 532

原创 C++入门基础知识

今天讲下C++的发展历程及他的几个入门的基础知识:1.什么是C++C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度 的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Str...

2019-05-12 20:45:14 330

原创 剑指offer_03 重建二叉树

今天分享一道剑指offer的题:重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题分析:题目中要求利用二叉树的前序和中序遍历结果重建二叉树,既然是重建在C++里面那肯定要用到new来...

2019-04-27 00:06:43 174

原创 剑指offer_02 从尾到头打印链表

今天分享一道剑指offer上的题:从尾到头打印链表题目要求:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路:首先看到从尾到头打印这句话,就应该记住栈的使用,栈的原则就是后进先出,所以这道题拿栈解决会比较简单,将链表中的元素先依次都压入栈中,然后依次弹出存到数组中。实现代码:class Solution {public: vector<int> ...

2019-04-25 22:33:05 306

原创 linux之进程间通信(管道)

今天来谈谈进程间通信:进程间通信简称也叫ipc!基本介绍:操作系统提供给用户的几种进程间通信方式。操作系统为什么要给用户提供进程间通信方式:进程的独立性(虚拟地址空间加页表)----提供一个公共的媒介。进程间通信是干什么的:进程间数据传输,数据共享,进程控制,事件通知,也正因为有不同的应用场景(不同的需求)因此操作系统也提供了多种不同的进程间通信方式继承于unix而来的管道(匿名管道/命...

2019-04-25 17:31:08 667 1

原创 剑指offer_01 二维数组中的查找

今天开始更新一些编程题,首先是《剑指offer》上的名企面试典型编程题:题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:首先题目中的关键语句是“每一行都是按照从左到右递增的顺序排序,每一列都是按照从上到下递增的顺序排序”,这个信息...

2019-04-24 13:46:54 315

原创 数据结构之多类排序详解

今天分享几个排序算法:排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法是稳定的;否则称为不稳定的。内部排序:数据元素...

2019-04-22 17:18:50 388

原创 数据结构之二叉树介绍

1.在说二叉树之前先说下什么是树?树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成的一个具有层次关系的集合。像一棵倒挂的树,它的根是朝上的,而叶子是朝下的。它的特点:每个根结点有零个或多个子结点,没有父结点的结点成为根结点,每个非根结点有且只有一个父结点!每个子结点可以分为多个不相交的子树。子树是不相交的!节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;...

2019-04-20 17:18:19 288

原创 Linux之动态/静态库

今天讲一下关于动静态库的生成和使用:编写简单的加减乘除运算函数并打包成动/静态库,并分别使用我将加减生成的是静态库,乘除生成的是动态库。c/c++程序编译的过程:1.预处理 :展开头文件,宏定义,条件编译处理等。通过gcc -E source.c -o source.i2.编译:这里是一个狭义编译意义,指的是将预处理后的文件翻译成汇编代码的过程。通过gcc -S source.i生成,默...

2019-04-18 22:53:11 393

原创 Linux之自主实现minishell重定向功能

今天分享关于Linux下自主实现minishell重定向功能:1.首先重定向是什么意思呢?Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的输出而是希望输出到某一文件中就可以通过Linux重定向来进行这项工作,操作句柄为文件描述符,可以将文件描述符想象成两个指针,相当于指针所指的内容变了。2.Linux下常用的shell重定向...

2019-04-16 22:59:38 340

原创 Linux里的fork,popen,system函数

今天介绍一下Linux里fork,popen,system三个函数:1.fork函数fork函数是通过复制父进程来创建子进程,父子进程代码共享数据独有,这是一种分时拷贝技术,相对于vfork函数来说有较大的改进之处,返回值是来分流父子进程,对于父进程返回的是子进程的pid>0,对于子进程,返回的是0。从图中可以看到它是一个系统调用函数2.system函数system函数可以看作是...

2019-04-11 16:52:43 421

原创 Linux之进程控制

今天分享一下关于Linux进程控制的知识点1.进程创建fork( )函数#include<unistd.h>pid_t fork(void);通过返回值判断是否创建成功,分流父子进程对于父进程,返回的是子进程的pid>0对于子进程,返回的是0创建过程:通过复制调用父进程,创建一个新的进程(子进程)。复制的父进程的pcb,复制了父进程大部分的数据,因此代码共享,...

2019-04-08 15:44:05 380

原创 linux实现一个简易的minishell

今天分享linux下实现一个简易的minishell程序:我使用的xshell6写的程序,不知为什么就是看不惯centos6的黑框框,,,通常连接xshell6后进入就是如下图所示:用户可以输入一系列指令然后会将结果显示出来,如上图所示所以要写一个简易shell需要遵循以下过程:1.获取命令行2.解析命令行3.建立一个子进程(fork)4.替换子进程(execvp)5.父进程等...

2019-04-06 20:31:31 577

原创 数据结构之无头单向非循环链表

链表在数据结构中相当的重要,在以后的实际工作中使用率也很高,所以今天分享一些关于链表的基本操作:1.链表的概念以及定义:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,形式如下图所示:typedef struct Node //链表的定义{ int value; //结点的数据域 str...

2019-04-05 14:27:35 216

原创 数据结构之顺序表

顺序表是数据结构里最基础的,今天分享关于顺序表的一些操作:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。因为顺序表又分为静态和动态,而静态的顺序表使用的是定长数组存储,而动态顺序表使用动态开辟的数组存储,生活中常常不知道数据规模的时候居多,需要使用的时候动态扩容,所以静态顺序表局限性更大。下面就主要讲解动态顺序表:1.首...

2019-04-05 13:40:30 414

原创 linux之进程

今天分享一个关于自己总结的进程的知识点1.进程的概念在谈进程之前先说下操作系统这个名词,操作系统是什么?简单的说操作系统就是一个为了让计算机更加好用,对计算机上的软硬件进行管理的软件。现在回归正题,进程是什么?从用户角度来说,进程就是运行中的程序。从操作系统角度来说,进程就是操作系统对运行中程序的描述信息,即进程描述符–统称PCB。描述信息包括:程序计数器,上下文数据,内存指针,记账...

2019-03-31 21:02:32 172

原创 Linux下需要了解的一些东西

今天分享一些关于linux有必要知道的东西:1.Linux下的重要目录1)/proc目录Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。2)...

2019-03-23 22:30:09 159

原创 Linux常用命令

今天分享一些关于我学习linux整理的常用命令1.目录相关命令ls 列出当前目录下的文件列表信息linux下文件夹通常叫目录当前:登陆成功后,打开终端所处的一个目录-a 显示隐藏文件linux下以.开头的文件是隐藏文件,默认不显示-l 显示目录下文件的详细信息pwd 显示当前所在路径例如:/home/test —绝对路径:以根目录作为起始的路径相对路径:以当前路...

2019-03-16 17:08:00 147

原创 进阶指针知识点总结

今天分享一个自己总结的关于进阶指针的知识点:1.数组指针数组指针和指针数组是两个挺绕口的名词,但是两个的意思截然不同,一个是指针,一个是数组。今天主要讲数组指针。举例如下:int (*p) [5] 这是一个数组指针,因为*首先和p结合代表他是个指针标量,然后指向了一个大小为5的整形数组。注: [ ] 的优先级高于 *对于一个int型数组arr[5]来说,arr和&amp...

2019-03-14 21:58:45 417

原创 回调函数的应用

今天分享一个比较重要的程序——回调函数实现冒泡排序回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。#define _CRT_SECURE_NO_WARNINGS#include...

2019-03-14 11:13:22 513

原创 初阶指针知识点总结

今天分享一个自己总结的初阶指针知识点:1.首先什么是指针指针就是一个变量,用来存放地址的变量,利用他可以找到该地址位置的内存单元,他起一个指向作用,属于一个形象化的定义。2.一级指针及定义举例如下:int a = 10;int *p = &amp;a;可以看出指针的定义方式就是: 指针类型 + *此时的p就是一个指针变量,他存放着a在内存中所处的地址。指针和变量一样同样具有类型...

2019-02-27 23:06:02 197

原创 模拟实现内存函数(memcpy,memmove)

今天分享两个程序分别实现内存函数memcpy和mommove:1.模拟实现memcpy功能介绍:memcpy函数的功能是从源str2所指的内存地址的起始位置开始拷贝n个字节到目标str1所指的内存地址的起始位置中,但是如果str2和str1所指的内存区域重叠,那么这个函数并不能够确保str2所在重叠区域在拷贝之前不被覆盖,所以具有一定的局限性。#include&lt;stdio.h&gt;...

2019-02-25 21:26:02 2199

原创 数组元素旋转和交换问题

今天分享三个关于数组元素旋转和交换的问题:问题一:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部。#define _CRT_SECURE_NO_WARNINGS#define N 10#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;strin...

2019-01-31 10:57:43 274

原创 C语言异或操作符的经典题

今天分享两个C语言异或操作符解决问题的经典例子:首先讲一下异或的基本运算规则:1^x = ~x 0^x = x0^0 = 0 0^1 = 11^0 = 1 1^1 = 0所以可以看出1和任何数异或的结果就是x取反,0和任何数的异或结果就是x本身,这是很重要的两个结果。实例一:不使用(a+b...

2019-01-28 17:48:39 889

原创 二进制序列翻转求和问题

今天分享一个二进制序列翻转的问题:编写一个函数:unsigned int reverse_bit(unsigned int value);这个函数的返回值value的二进制位模式从左到右翻转后的值。如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)100110000000000000000000...

2019-01-28 16:52:35 848

原创 C语言操作符总结

今天分享一个自己刚整理完的C语言操作符的知识点C语言基本操作符分为以下几类:算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式算术操作符+ - * / %1.除"%“外其他几个操作符均可用于整数和浮点数。2.对于”/"来说,计算的两个数为整数则执行整数除法,若含有浮点数,则执行浮...

2019-01-27 11:15:52 242

原创 C语言操作符涉及的二进制序列问题

今天分享几个用C语言操作符解决的二进制序列问题写一个函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 个 1#define _CRT_SECURE_NO_WARNINGS#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int count_one_bits(unsigned int val){ int count...

2019-01-25 16:46:23 257

原创 递归问题集合

今天分享几个递归的小程序1.递归输出斐波那契数#define _CRT_SECURE_NO_WARNINGS#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int fun(int n){ int result=0; if (n == 1 || n == 2){ result = 1; } else{ result = fu...

2019-01-23 17:08:10 228

空空如也

空空如也

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

TA关注的人

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