(期末考试快到了,所以比较粗糙,请各位读者理解。。)一、 概念DBSCAN是一种产生划分聚类的基于密度的聚类算法,簇的个数由算法自动地确定。低密度区域中的点被视为噪声而忽略,因此DBSCAN不产生完全聚类。二、 伪代码1 将所有点标记为核心点、边界点和噪声点。2 删除噪声点。3 为距离在Eps之内的所有核心点之间赋予一条边。4 每组连通的核心点形成一个簇。5 将每个边界点指派到一个与之关联的核心点的簇中。...
在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式。单例模式分为懒汉模式,跟饿汉模式两种。首先给出饿汉模式的实现template <class T>
class singleton
{
private:singleton(){};singleton(const singleton&){};//禁止拷贝singleton& operator=(const singleton&){};//禁止赋值static T* m_instance;
public:static T* GetInstance();
};template <class T>
T* singleton<T>::GetInstance()
{return m_instance...
本文用C++实现简单的二叉查找树。其中某些函数有两个版本,一个是用于内部调用,一个是用于外部调用。绝大多数函数都是通过递归实现,这也显示出递归的强大。 其中:clone函数的巧妙应用实现了操作符的重载 1/************************************************************************/ 2/* 二叉寻找树的实现 */ 3/******************************...
最近在博客中看到许多用js写的密码强度检测,我觉得挺有意思的,所以呢我打算自己也写个来玩玩,最可悲的是我还没学js,当然这不重要,所以呢打算用C++来写一个密码强度检测,这里我来给大家说说用JS写的和用C++写的不同之处JS写的密码强度检测:当你输入一串>=6 位数的时候 他后面会自动弹出密码的强度 ,还有你再继续输入然后他后面的密码强度会更换 (当然我也尝试解决过这个问题,写出来就一直只能输入6位数,由于我技术有限,如...
问题描述:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:
1 (0 0 0 1)
4 (0 1 0 0)↑ ↑上面的箭头指出了对应二进制位不同的位置。实现方法:class Solution {
public:int hammingDistance(int x, int y) {int count=0;vector<int> a;vector<int> b;if(x==0&&y==0)return0;elseif(x==0&&y...
单例模式:只能生成一个实例的类即是实现了Singleton模式的类型。#include <iostream>usingnamespace std;class singleton
{
public :static singleton* getInstance();
private:singleton();static singleton* instance;staticint num;
};
int singleton::num = 0;
singleton* singleton::instance = nullptr;singleton::singleton()
{num++;cout << num <<"singleton is created!" << endl;
}singleton* singleton::getInstance(...
几乎所有的语言都把数组作为一种固有的数据类型,数组也是我们最常用的数据结构之一。在语言底层,数组是如何实现的呢?本文以抽象数据类型的形式,定义、实现数组。 创建数组,理论上,我们可以使用创建任意维度的数组;但这个多维只是我们“感知”上的多维度,实际上,内存是一种线性存储单元,不可能实现真正的多维。换言之,多维数组在内存中也是顺序的排在一维,占用连续的一段存储空间。 以二维数组为例。存储数组时,...
模仿stl,实现了hashtable。纯属练手,只实现其基本功能,不当之处还望指正。本文为实现独立的空间配置器。#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
template<class value>
struct _hash_node{value val;_hash_node *next;~_hash_node(){delete val;}
};
template<class value,class key,class HashFcn,class EqualKey>
class _hashtable;
template<class T1,class T2>
class _hashfcn_mod;...
聚类是一种无监督的学习,它将相似的对象归到同一个簇中。它有点像全自动分类(类别体系是自动构建的)。聚类方法几乎可以应用于所有对象,簇内的对象越相似,聚类的效果越好。本文要介绍一种称为K-均值(K-means)聚类的算法。之所以称之为K-均值是因为它可以发现k个不同的簇,且每个簇的中心采用簇中所含值的均值计算而成。在介绍K-均值之前,先讨论一席簇识别(cluster identification)。簇识别给出聚类结果的含义。假定有一些...
1 #include <iostream>2 #include <vector>3 #include <memory>4 #include <thread>5 #include <type_traits>6 #include <typeinfo>7 #include <sstream>8 #include <utility>9 10 11class StrVec12{13 friend std::ostream &operator<<(std::ostream &os, const StrVec &rhs);14 15private:16 std::string *elemnets_;17 std::string *memry_free;18 std::string *cap;19 std::allocator<std::string> alloc;...
#include "stdafx.h"
#include <iostream>
usingnamespace std;
class Complex
{public:Complex(){real = 0;imag = 0;}Complex (double r, double i){real = r ;imag = i;}Complex operator+(Complex &c2);void display();
private:double real;double imag;
};Complex Complex :: operator+(Complex &c2)
{Complex c;c.real = real + c2.real;c.imag = imag + c2.imag;return c;
}void Complex::display()
{cout<<"}"<<real<<","<...
学习了图的深度优先和广度优先遍历,发现不管是教材还是网上,大都为C语言函数式实现,为了加深理解,我以C++面向对象的方式把图的深度优先和广度优先遍历重写了一遍。废话不多说,直接上代码: 1 #include<iostream>2 3usingnamespace std;4 5 6//构造一个循环队列来存放广度优先算法的下标 7 8#define ADD 5;9 10usingnamespace std;11 12class CirQueue13{14private:15int * base;16int front,rear,size,length;17publi...
之前在《C/C++和Lua是如何进行通信的?》一文中简单的介绍了lua与宿主之间的通信。简单的说两种不同的语言之间数据类型不一样又如何进行数据交换呢?那就是lua_State虚拟栈,通过栈操作和lua库函数,我们很轻松就能完成两者之间的数据交换。 开始之前,明确几个问题,lua中的虚拟栈的索引编号问题(我们假设栈大小为n),编号1是栈底,n视栈顶,编号-1是栈顶,-n是栈底。lua中的库函数需要访问和操作栈上的数据都是通过索引编号...
[code=C++] /*
author:jiangxin
Blog:http://blog.csdn.net/jiangxinnju
Function:method of Josephus question
*/
#include <iostream>using namespace std;struct node
{
int seq;
node *next;
};
typedef struct node NODE;void test_Josephus()
{
/*假设共有n人,从第s个人开始数数,每数到m该人出列,后面的人重新开始数,知道全部人出列*/
int n,s,m;
NODE *head,*last,*current,*prev;
...
1. void *mymemcpy(void *dest, const void* src, size_t n); 内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中 1void *mymemcpy(void *dest, constvoid* src, size_t n) {2 assert(dest != NULL && src != NULL);3 4//考虑内存重叠 5if (src < dest && (char*) src + n > dest) {6 7//void*类型强制转换为char* 8char* psrc = (char*) src + n - 1...