C++
文章平均质量分 60
Imcy
一只蜗牛
展开
-
输出字符串中重复次数
void get(char *arr,int n){ int *count = new int[n]; char *temp = new char[n]; for (int i = 0; i < n; i++){ count[i] = 0; for (int j = 0; j < n;j++) if (temp[j] =原创 2017-03-25 12:19:23 · 1135 阅读 · 0 评论 -
算法导论:c++桶排序
代码实现桶排序是按照桶的概念把元素往里面放,然后桶内还有一个排序,桶内排序可以用比较排序也可以用计数排序递归使用桶排序也可以。我这里比较懒,直接用了sort函数。直接就三步,仍然用vector实现。 建桶 放桶 连接桶 vector<double> bucket_sort(vector<double> array) { vector<vector<double>> o原创 2017-12-04 17:17:44 · 772 阅读 · 0 评论 -
算法导论:c++实现红黑树
数据结构性质 这里定义一个结构体保存颜色enum colorRB{ black = 0, red,};struct TreeNode_RB { int val; colorRB color; TreeNode_RB *left; TreeNode_RB *right; TreeNode_RB *parent; TreeNod原创 2017-12-21 11:17:27 · 378 阅读 · 0 评论 -
c++实现吃豆子游戏
仍然是按照教程做的一个有三关的吃豆子游戏,这个游戏比较简单创建的是win32应用程序,调用了GDI绘图库。玩家吃完地图内全部豆子则胜利,地图内安放3个干扰小人,被干扰小人吃掉则游戏结束。游戏结果:关卡1: 关卡2: 关卡3: 框架结构 pacman:游戏主函数,控制主循环 GMap:地图类用于创建三关的地图 Stage_1、Stage_2、Stage3:继承自GMap,原创 2017-12-06 11:48:21 · 19776 阅读 · 3 评论 -
算法导论:排序算法笔记
排序算法相关笔记原创 2017-11-29 10:19:33 · 404 阅读 · 0 评论 -
c++实现植物大战僵尸修改器
参考C++项目开发实战入门的第四章内容,书里面写的太简略了,自己实现的时候整理了一下。建立对话框建立一个基于对话框的MFC程序MemoryCheatDlg,绘制主界面,主对话框ID:IDD_MEMORYCHEAT_DIALOG: 包括进度条,多个编辑框,两个复选框,多个按钮,两个List Box。 新建一个对话框用于32位进程显示,对话框ID:IDD_DIALOG_PROGRESS_LIST原创 2017-12-16 15:23:13 · 11835 阅读 · 2 评论 -
mfc绘制曲线
自带库绘制用mfc自带的绘图函数绘制一个sin曲线,可以说是非常费力和傻了,基于对话框程序在onPaint()函数中添加绘制代码。效果也并不是很好。void CdrawLineDlg::OnPaint(){ if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERA原创 2017-12-06 21:04:25 · 11529 阅读 · 1 评论 -
c++:静态成员
重要性质静态数据成员类型可以是长廊、引用、指针、类类型等类的静态成员存在于任何对象之外,不属于任何一个对象,对象共享静态成员函数不能声明成const不能在静态函数体内使用this指针不能在类内部初始化静态成员class Account {public: void calculate() { amount += amount*interestRate; }原创 2018-01-23 15:42:32 · 182 阅读 · 0 评论 -
c++:容器
顺序容器vector: 可变大小数组deque: 双端队列list: 双向链表forward_list: 单向联邦array: 固定大小数组string: 字符容器特点下标访问速度快添加删除很慢初始化vector v1(10,init); //前面是大小,后面是初始值拷贝初始 必须满足迭代器类型相同liststring> authors原创 2018-01-23 17:02:41 · 195 阅读 · 0 评论 -
c++:泛型算法
头文件泛型算法都定义在头文件algorithm中,算法并不直接操作容器,而是遍历由两个迭代器指定的一个元素范围。find函数find操作的是迭代器,因此我们可以用同样的find函数在任何容器中查找值vectorint> a = { 1,3,43,54,12 };int val = 3;auto result = find(a.begin(), a.end(), val)原创 2018-01-23 21:16:01 · 356 阅读 · 0 评论 -
c++:单词转换函数
c++ primer上的一个例子,输入一个转换映射文件和一个待转换文件,输出转换后结果。用c++的map来实现。//建立映射函数mapstring, string> buildMap(ifstream &map_file) { mapstring, string> trans_map;//保存转换规则的map string key; //要转换的单词 string原创 2018-01-24 16:43:20 · 1128 阅读 · 0 评论 -
c++:智能指针例子
实现一个strBlob类,通过智能指针,这个类的对象间共享数据data//动态内存实例StrBlobclass StrBlob{public: typedef vectorstring>::size_type size_type; StrBlob(); StrBlob(initializer_liststring> il); size_type siz原创 2018-01-26 11:17:41 · 1991 阅读 · 0 评论 -
算法导论:c++实现二叉搜索树
struct TreeNode_p { int val; TreeNode_p *left; TreeNode_p *right; TreeNode_p *parent; TreeNode_p(int x) : val(x), left(NULL), right(NULL),parent(NULL) {}};二叉搜索树搜索TreeNode_p *tree_s原创 2017-12-18 16:27:54 · 575 阅读 · 0 评论 -
算法导论:c++计数排序
区别于比较排序需要元素进行相互比较,计数排序仅仅通过元素个数确定它在排序结果中的位置。代码实现实在是不想用数组了,这次用方便易操作的vector代替。/*计数排序*/vector<int> counting_sort(vector<int> array,int k) //k表示数组中最大元素,output为输出{ vector<int> temp(k+1,0);//临时数组,存放个数原创 2017-12-02 17:25:26 · 616 阅读 · 0 评论 -
算法导论:c++归并排序
基本思想就是把数组一直分成两半,然后对这两半进行排序归并。 先分成左右两半,然后合并时比较左右两半一直选最小的替代原数组。这种排序是非原址的,需要额外的空间。 伪代码非常简单,采用分治的思想: 合并的伪代码: 一趟合并的示意图: 代码实现/*归并排序合并部分*/void merge(int array[], int p, int q, int r) { int n1 =原创 2017-12-02 16:44:50 · 453 阅读 · 0 评论 -
递归
斐波那契数列#include "stdafx.h"#include<iostream> using namespace std;int f(int index){ if (index==1||index==2){ return 1; //递归程序的出口 } else{ return f(index-1)+f(index-2);原创 2017-04-25 11:02:53 · 256 阅读 · 0 评论 -
kinect+opencv+mfc读取彩色摄像头
纠结了一下午的kinect初尝试,算是有一点小成果了,觉得这方面资料比较少,打算写一下总结。前期准备1.先安装Kinect的SDK,这里采用的是SDK1.8(虽然都17年了,但是老设备还是得装1.8)之前装2.0引起了插入Kinect一直闪烁无法装驱动的问题。 2.装好SDK后可以看看里面的小示例啦,然后就是安装opencv,这里选的是3.0,然后配置一些环境变量 3.安装好opencv后可原创 2017-10-19 20:28:47 · 2424 阅读 · 2 评论 -
python在图片上画特定大小角度矩形框
做图像识别的时候需要在图片中画出特定大小和角度的矩形框,自己写了一个函数,给定的输入是图片名称,矩形框的位置坐标,长宽和角度,直接输出画好矩形框的图片。 主要思想是先根据x,y坐标和长宽得到矩形,然后通过数学计算得到旋转angle角度后的新矩形框的四个顶点位置坐标,再利用draw.line()函数画出来。import mathimport matplotlib.pyplot as pltim原创 2017-10-23 14:57:45 · 9518 阅读 · 1 评论 -
mfc socket发送和接收数据和文件
折腾了一个早上在原来的kinect程序上写一个远程发送图片功能,把截图用socket发送出去,才实现windows下两程序的对话。 主要参考了两篇博客,鞠躬感谢两位作者: http://blog.csdn.net/u010477528/article/details/41680425 http://www.cnblogs.com/wainiwann/archive/2012/05/22/原创 2017-10-25 14:12:49 · 11528 阅读 · 2 评论 -
linux qt+windows mfc利用socket传送消息
今天一天又费了一天的时间在linux上写socket程序与windows之前写的kinect程序通讯。这真是艰难而又曲折的尝试啊。。。。。 1.windows作为服务器,windows下mfc程序见上一篇博客http://blog.csdn.net/u013948010/article/details/78340858 2.linux作为客户端先在linux下写一个C/S一开始不能从很难原创 2017-10-26 20:52:26 · 1148 阅读 · 1 评论 -
算法导论:c++选择算法
选择算法即给定数组A,选出第i个大的元素,区别于排序后选择这种比较慢的方法,选择算法不需要排序即可选出第i个大元素基于随机快排选择算法首先实现随机快排: 随机快排就是在快排的基础上主元用随机数产生。// 随机快速排序之随机选择替代主元int random_partition(int array[], int p, int r){ int i=(rand() % (r - p + 1))原创 2017-12-08 11:29:28 · 908 阅读 · 0 评论 -
编程之美:寻找最大的K个数
解法一: 该解法是大部分能想到的,也是第一想到的方法。假设数据量不大,可以先用快速排序或堆排序,他们的平均时间复杂度为O(N*logN),然后取出前K个,时间复杂度为O(K),总的时间复杂度为O(N*logN)+O(K). 当K=1时,上面的算法的时间复杂度也是O(N*logN),上面的算法是把整个数组都进行了排序,而原题目只要求最大的K个数,并不需要前K个数有限,也不需要后N-K个数原创 2017-12-08 15:47:11 · 370 阅读 · 0 评论 -
算法导论:c++堆排序&优先队列
预习了一下算法导论的堆排序,以前数据结构课简直是一知半解。 建大根堆的过程为从数组中间向左遍历,然后不断调整左右子树使得最大数处于根节点。一开始以为堆排序一定要用二叉树还写了个傻傻的建树程序。。。数组调整为大根堆/*调整大根堆*/void max_heapify(int data[], int cur, int heapsize){ int left = 2 * cur + 1;原创 2017-11-30 20:22:58 · 600 阅读 · 1 评论 -
kinect+opencv+mfc读取深度和彩色摄像头及截图
接着上面那一篇读彩色摄像头的。在其基础上加上了定时器和读深度摄像头即截图功能。最终结果图是酱紫的: 截图结果 设置定时器由于好像循环读取并不是很好,所以把打开摄像头和读取视频的代码分开了,并设了一个定时器。当然其中避免不了把一些变量设成全局变量的啦。 定时器void CopentestDlg::OnTimer(UINT_PTR nIDEvent){ if (1 == nI原创 2017-10-20 15:49:08 · 4805 阅读 · 2 评论 -
编程之美:1的数目
获取N的二进制中1的个数最简便解法,直接用n与(n-1)进行与操作,直到n=0,程序复杂度只与1的个数有关void getBinOneNum(int n) { /*获取n二进制中1的个数*/ int count = 0; while (n) { n &= (n - 1); count++; } c...原创 2017-11-17 10:04:38 · 232 阅读 · 0 评论 -
算法导论:c++快速排序
快速排序也采用分治的思想,以最后一个元素为基准把其分成大于它和小于它的两部分,关键在于确定分割点。算法思想一趟快排算法实现安装书上的算法思想,主要要注意 i,j的初始化,i=p-1,j=p 终止条件j=r 每次循环j都要+1移动/*快排分割,p首端,r尾端,i控制小于,j控制大于*/int quick_partition(int array[], int p, int r){原创 2017-12-01 19:47:48 · 304 阅读 · 0 评论 -
算法导论:c++实现图
图的表示这里用结构体来表示图G,和图顶点GraphNode,后面要用到的顶点颜色用枚举类型表示enum color{ white = 0, gray, black};struct graphNode { char name; //顶点名 struct graphNode *pre; //前驱节点 int d; //深...原创 2018-02-26 17:25:08 · 904 阅读 · 0 评论