自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用C语言编写简单游戏——三子棋

先简单介绍一下三子棋的规则,方便我们接下来的编程和理解。规则如下: 在九宫格棋盘上,只要将自己的三个棋子走成一条线(横、竖、对角线),对方就算输了。 规则很简单,但是我们应该从哪里入手完成这个三子棋程序呢? 首先,我们的游戏程序应该先有个菜单页面,这个菜单页面用来让用户操作选择玩游戏,或是退出。界面可以很简单,只需要几条 printf 语句即可:...

2018-04-07 23:35:50 1808 1

原创 文本相似度检测小项目

项目介绍 文本查重的方式有很多,但都离不开分词这一项,所以在这里我选择jieba库来代替我分词; 相似度求法也很多,比如说余弦距离、欧几里得距离、曼哈顿距离等等,这里我选择余弦距离,比较容易理解。 项目规划 分词 统计词频 构建余弦向量 求余弦距离 项目过程 引入jieba库,这个库可以在网上直接找到,下载之后配置到项目中即可; 创建一个TestTextSim...

2019-03-09 22:37:55 701

原创 剑指offer21-25

第21题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。思路:先将压栈序列压入辅助栈s中,当辅助栈顶元素和出栈序列有相同时,出栈,然后继续检测,直到辅助栈没有元素为止。无元素为true,有元素为falseclass Solution {public: bool IsPopOrder(vector<in...

2018-12-18 20:34:38 219

原创 剑指offer16-20

第16题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。//递归class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { if(pHead1 == nullptr) return pHead...

2018-12-17 21:26:51 212

原创 剑指offer真题11-15

11题:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示//法一//让n减去1,我们发现,在让他和原来的n按位与之后,n中的1会减少一个,依次循环下去,就可以累计出1的个数,且这个方式不用担心负数的问题class Solution {public: int NumberOf1(int n) { int count = 0; ...

2018-12-17 21:20:10 173

原创 继承

1.什么是继承?无非就是字面意思,继承家产而已。官方说法:面向对象程序设计使代码可以复用的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。特点:呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程,继承使类设计层次的复用。class Person{public: Person(string name = "david",i...

2018-12-17 12:32:21 227

原创 Linux基础命令

ls指令用法:ls[选项][目录文件]功能:列出该目录下的所有子目录和文件。选项:-a 列出目录下的所有文件,包括以 . 开头的隐含文件-d 将目录像文件一样显示,而不是显示其下的文件-i 输出文件的i节点的索引信息,如ls -ai 指定文件-l 列出文件的详细信息-k 以k字节的形式表示文件的大小,要和-l和-a一起使用,如ls -alk 指定文件-r 对目录反向排序-t ...

2018-12-14 22:45:46 492

原创 剑指offer真题6--10

第六题:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。分析:这个题看似简单,但是会出现数组元素重复的情况,用二分查找比较便捷;class Solution {...

2018-12-13 19:58:46 205

原创 剑指offer真题1--5

第一题:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析:因为这是一个有序的二维数组,且从左至右递增,从上至下递增,经过画图就会发现,再这个二维数组中有两个特殊的位置,左下角和右上角,这两个位置和其他地方不同,只有两条路径,分析起来更为简单,且两条...

2018-12-13 19:37:56 231

原创 stack和queue的操作和实现

stack的操作|函数名| 功能 ||–|--|| stack(const container_type &ctnr = container_type()) | 构造空栈 ||bool empty() const判断栈是否为空||size_type size() const|返回栈的长度||value_type &top()|返回栈顶元素的引用||const val...

2018-12-10 13:56:52 226

原创 list类的使用方法

一、list的底层构造1.list是可以再常熟范围内任意位置进行插入、删除的序列式容器,并且list还可以前后双向迭代;2.list的底层是一个双向链表结构,list和forward_list非常相似:forward_list是单链表。只能朝前迭代;3.list保留了链表的基本特性。二、list的构造函数名 功能 list() 构造空的list list(s...

2018-12-06 10:43:48 858

原创 二叉树的三种非递归遍历(leetcode)

一、前序遍历前序遍历的思想是:根左右1.根节点1让自己存起来再去找左子树,根节点的左节点不存在,所以指向他的右节点;2.节点2先存自己然后指向他的左节点,左节点存在,存入左节点,而且左节点没有孩子节点,所以再指向右节点,右节点不存在,直接返回class Solution {public: vector<int> preorderTraversal(Tre...

2018-12-05 09:57:05 457

原创 list接口实现

//模拟实现list容器namespace LIST{ template<class T> //list的节点类 struct ListNode { ListNode(const T& val = T()) : _pPre(nullptr) , _pNext(nullptr) , _val(val) {} ListNode* ...

2018-12-05 08:59:42 218

原创 list的iterator

template<class T, class Ref, class Ptr> class ListIterator { typedef ListNode<T>* PNode; typedef ListIterator<T, Ref, Ptr> Self; public: ListIterator(PNode pNode = nullptr)...

2018-12-05 08:43:04 342

原创 vector的使用方法

一、vector的构造函数函数名 功能 vector() 无参构造 vector(size_type n, const value_type &val = value_type()) 构造并初始化n个val vector(const vector& x) 拷贝构造 vector(InputIterator first,InputItera...

2018-12-04 09:47:57 1837

原创 vector类接口实现

namespace VECTOR{ template<class T> class vector { public: typedef T* Iterator; typedef const T* ConstIterator; Iterator begin() { return _start; } Iterator end() { re...

2018-12-03 23:15:13 296

原创 string类接口实现

namespace bit{ class String{public: typedef char* Iterator;public: String(const char* str = " ") { if(str == nullptr) { assert(false); return ; } _size = strlen(str); _capacit...

2018-11-30 16:16:18 311

原创 string类使用方法

一、string类对象的常见构造函数名功能string()构造空的string类对象,即空字符串string(const char* s)用C-string来构造string类对象,即空类中包含字符串string(size_t n,char c)string类对象种包含n个字符cstring(const string& s)拷贝构造函数...

2018-11-30 16:02:04 332

原创 动态内存管理

一、内存分布先看C++中程序内存区域划分。1.栈又称为堆栈,非静态局部变量/函数参数/返回值等;2.内存映射是高效I/O映射方式,用作进程间通信;3.堆用于动态内存分配;4.数据段存储全局数据和静态数据;5.代码段一般就是可执行代码;6.内核是用户不能操作的那部分。二、C++和C语言的动态内存管理在C语言中我们都知道,C语言的动态内存管理一般用malloc/...

2018-11-18 20:18:08 199

原创 类与对象3

注:这是一篇补充博客。一、构造函数补充;1.构造函数体赋值:在创建对象时,编译器通过调用构造函数,给对象中每个成员一个合适的初始值。class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; }private: int _year...

2018-11-17 18:08:45 234

原创 将静态顺序表改为动态顺序表

注:本篇只是大概实现动态顺序表,静态顺序表详叙请参照https://blog.youkuaiyun.com/R_T_P_A_D/article/details/84189236实现动态顺序表,只需在静态顺序表上做两个变化就可以实现:首先,需要将静态顺序表里面的宏定义取消掉,因为这是静态顺序表中最不安全的地方,任何人都可以去改变这个宏,所以在这里,我们需要将原本的数组形式的data,改为*data,其实...

2018-11-17 16:13:26 244

原创 C语言实现静态顺序表

实现顺序表分为以下几步:1.先写出封装顺序表结构的结构体;2.初始化顺序表;3.增删查改;4.顺序表的逆置等。#define MAX_SIZE 100typedef int DataType;typedef struct SeqList{ DataType data[MAX_SIZE]; DataType length;}SeqList;//顺序表的初始化就是...

2018-11-17 15:22:41 328

原创 类与对象2

一、类的6个默认成员函数构造函数是特殊的成员函数,他是一种随对象创建二自动被调用的公有成员函数,有且仅在定义对象的时候执行一次,用途是为对象初始化。特征:1.可以初始化私有的成员变量;2.函数名就是类名;3.无返回值;4.可以重载;5.类中和类外定义均可;6.如果类中没有给出构造函数,那么编译器就会自动产生一个默认的构造函数(同第一点所说的默认成员函数),但是只要给出了构造函数,...

2018-11-06 20:49:50 120

原创 类与对象1

1、类定义最简单来说,类就是定义了一个新的类型和新的作用域。class Student{ //类体;由类成员(成员函数和成员变量等)组成 };//后面一定要加上分号(因为在类定义之后可以接一个对象定义列表)class为定义类的关键字,Student为类的名字,{}为类的主体,后面分号不能丢。类中的元素成为类的成员,类中数据称为类的属性或类的成员变量;类中的函数称为类的方法或者类的成...

2018-10-30 20:35:09 189

原创 项目1:C语言实现贪吃蛇小游戏

实现这个小游戏我们可以分为以下几步:1.把蛇要走的地图打印出来;2.把蛇和食物打印出来;3.让蛇动起来,控制方向;4.判断蛇目前所处状态。//.C文件#include"Snack.h"void SetPos(int x,int y){ COORD pos = {0}; HANDLE handle = NULL; handle = GetStdH...

2018-10-28 21:09:08 368

原创 逻辑问题

1.5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次这种逻辑问题用人工去计算,也可以计算出来,但是当用上编程语言来实现这种问题时,才发现这种问题可以这么简单,下面我将仔细说明这种题的做法:首先,看这种问题到底...

2018-04-11 21:14:47 201

原创 C语言写扫雷

用C语言单纯写扫雷不是很难,但是要想第一次输入坐标不被炸死,并且当周围没有雷时自动展开,还是有点难度的:一共需要九个函数来完成这个代码,分别是:初始化数组,选择难度,打印扫雷棋盘,确定雷的个数,布雷,扫雷,确保第一次不被炸死,没有雷时可以展开。代码如下:test.c#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"int  game(){    i...

2018-04-08 23:03:28 262

原创 浅谈C语言操作符

       目前,我已经学完了所有操作符,以我对它的理解写一下操作符最基本的用法。       操作符一共分为十种,分别是:算术、移位、位、赋值、单目、关系、逻辑、条件、逗号、下标引用操作符。每一种操作符都有不同的作用。在这里我会以我浅薄的认识对他们一一介绍。       1.算术操作符:       “/”的特点是两个整数相除结果还是整数,两个数中只要有一个浮点数,那么结果也是浮点数,只取商;...

2018-04-07 17:11:51 177

空空如也

空空如也

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

TA关注的人

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