算法与数据结构
文章平均质量分 80
小鱼人会飞
本科就读于吉林大学现阶段在攻读北京大学智能科学技术硕士学位研究方向计算机视觉计算机图形学等领域
展开
-
Hash Table 的实现
一、Hash Table的概念元素的存储位置与它的关键码之间建立一个确定的对应关系Hash(),使得每个关键码与一个唯一的存储位置对应:Address=Hash(Key)在插入时,依此函数计算存储位置并按此位置存放。在搜索时,对元素的关键码进行同样的函数计算,把求得的函数值当做元素的存储位置。按此位置去元素比较,弱关键码相等,则搜索成功。如果Hash Table允许有m个地址,值域原创 2013-04-01 23:10:51 · 1774 阅读 · 0 评论 -
游戏开发中的人工智能——A*路径寻找算法(二)
1、启发式搜索状态空间搜索:就是将问题求解过程表现为从初始状态到目标状态寻找这个路径的过程。由于求解问题的过程中分枝有很多,主要是求解过程中求解条件的不确定性,不完备性造成的,使得求解的路径很多这就构成了一个图,我们说这个图就是状态空间。问题的求解实际上就是在这个图中找到一条路径可以从开始到结果。这个寻找的过程就是状态空间搜索。常用的状态空间搜索有深度优先和广度优先。广度优先是从初始状态一转载 2013-08-16 10:13:56 · 2820 阅读 · 0 评论 -
构造函数中调用虚函数
转载地址:http://www.cnblogs.com/carter2000/archive/2012/04/28/2474960.html #include class Base{public: Base() { Foo(); } ///< 打印 1 virtual void Foo() { std::cout <<转载 2013-09-27 22:34:21 · 1324 阅读 · 0 评论 -
K-D Tree
简简介k-d树[1](k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。2应用背景SIFT算法中做特征点匹配的时候就会利用到k-d树。而特征点匹配实际上就是一个通过距离函数在高维矢量之间进行相似性检索的问题。针对如何快速而准确地找到查询点的近邻,现在提出了很多高维空间索引结构和近似查询的算法转载 2013-10-12 22:11:14 · 1251 阅读 · 0 评论 -
memcpy 和 memmove
memcpy代码:;***;memcpy.asm - contains memcpy and memmove routines;; Copyright (c) 1986-1997, Microsoft Corporation. All right reserved.;;Purpose:; memcpy() copies a s转载 2013-10-12 22:18:32 · 911 阅读 · 0 评论 -
my2DAlloc
题目原文:Write a function called my2DAlloc which allocates a two dimensional array. Minimize the number of calls to malloc and make sure that the memory is accessible by the notation arr[i][j].译文:转载 2013-10-12 23:28:48 · 1190 阅读 · 0 评论 -
Aligned malloc in C++
void *aligned_malloc(size_t required_bytes, size_t alignment) { void *p1; void **p2; int offset=alignment-1+sizeof(void*); if((p1=(void*)malloc(required_bytes+offset))==NULL) return NULL;原创 2013-10-12 23:07:11 · 2968 阅读 · 0 评论 -
虚函数与虚继承寻踪
转载地址:http://www.cnblogs.com/fanzhidongyzby/archive/2013/01/14/2859064.html详见《深度探索C++对象模型》封装、继承、多态是面向对象语言的三大特性,熟悉C++的人对此应该不会有太多异议。C语言提供的struct,顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继转载 2013-10-17 13:03:52 · 819 阅读 · 0 评论 -
完全二叉树插入新结点
在一个完全二叉树中插入新的节点,注意这里的完全二叉树并非二叉搜索树,因此我们只需要定位最后一个结点就可以了,不需要满足二叉搜索树的条件。一个最简单的想法就是BFS,如果不是満二叉树,找到第一个有一个子树为空的节点即可。否则,则需要找到最下一层的最左结点。另外一个想法是利用完全二叉树的性质,首先判断左子树的最右结点与右子树的最右结点高度,如果相等,只需要插入到左子树即可,否则插入右子转载 2013-10-22 22:01:04 · 4279 阅读 · 0 评论 -
python 学习笔记
1 List# List examplesshoplist = ['peach','mango','banana']print('I have',len(shoplist),'items to buy!')print('These items are:')for item in shoplist: print(item) # After append the原创 2013-12-11 14:29:36 · 1062 阅读 · 0 评论 -
Cracking the Coding Interview
前言对于即将要找工作的CODER,如何准备面试,这是一个很宽泛也很茫然的问题。也许大家首先想到的是:算法导论+数据结构+面试题。当然,每个人心中都有一个哈姆雷特。以下我将记录下我的找工作前的暴风雨洗礼。一、基本功部分(1)数据结构,主要参考了《数据结构(用面向对象方法与C++语言描述)》殷人昆这本书,差不多两个星期看完,部分代码亲自实践了一下。同时结合《C++ Primer原创 2013-04-01 21:35:17 · 5823 阅读 · 0 评论 -
Delaunay三角剖分(Delaunay Triangulation)
1.Delaunay三角剖分&Voronoi图定义2.计算Delaunay三角剖分的算法及分析3.例子程序&代码大话点集的三角剖分(Triangulation),对数值分析(比如有限元分析)以及图形学来说,都是极为重要的一项预处理技术。尤其是Delaunay三角剖分,由于其独特性,关于点集的很多种几何图都和Delaunay三角剖分相关,如Voronoi图,EMST树,Gab转载 2013-06-07 13:38:06 · 2681 阅读 · 0 评论 -
C++ 快速排序QuickSort的实现
这是快速排序算法的实现代码:// DataStruTest3.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;static const int MaxSize = 12;int num[MaxSize] = {3原创 2013-04-19 21:51:30 · 1107 阅读 · 0 评论 -
C++ 去除字符串中的重复字符
给定一个字符串,要求去除其中的重复字符。例如 abcbs ,操作后得到 abcs 。方法一:不考虑时间和空间,最简单直接的方法是 另外开辟一个 string 数组,用于保存unique字符。主函数中的 isUnique(mystr) 见我的上一篇博文。 string duplicate(string str){ if(str.size()<2) return str;原创 2013-04-03 15:34:54 · 17405 阅读 · 1 评论 -
C++ 判断是否是子字符串和回文字符串
一、首先我们需要写出判断知否值子字符串的函数bool isSubstr( string str1 , string str2){ if(str1.size()>=str2.size()) { string::size_type len = str2.size(); for(string::size_type i=0 ; i<str1.size()-len+1 ; i++) {原创 2013-04-07 15:33:16 · 4606 阅读 · 0 评论 -
C++ 标准库类型 String
一、String类1、加入 头文件getline(cin , string): 函数将接受两个参数:一个输入流对象和一个string对象。从输入流的下一行读取,并保存到string中,但不包含换行符。empty():判断是否为空。size(): 返回字符长度,记住任何存储string的size() 结果的变量必须为 string::size_type 类型,不要把size 的返回原创 2013-04-02 20:38:36 · 1047 阅读 · 0 评论 -
C++ static关键字解析
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将只在转载 2013-04-09 15:18:23 · 827 阅读 · 0 评论 -
C++ const关键字详解
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下:常变量: const 类型说明符 变量名常引用: const 类型说明符 &引用名常对象: 类名 const 对象名常成员函数: 类名::fun(形转载 2013-04-09 14:21:06 · 866 阅读 · 0 评论 -
C++ stack的代码实现
废话不多说,直接看代码。下面是Stack类class Stack{public: Stack(int isize=100); int Pop(double & dval); int Push(double dval); int Top(double & dval); ~Stack();private: int m_count; int m_max;原创 2013-04-11 22:44:00 · 1821 阅读 · 0 评论 -
C++ 迷宫问题的回溯解法
// DataStruTest1.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include #includeusing namespace std;struct offsets{ int a; int b; char原创 2013-04-18 15:16:39 · 5383 阅读 · 0 评论 -
C++ queue的代码实现
队列是先进先出的结构。首先贴出Queue类的结构:class Queue{public: Queue(int sz=10); bool EnQueue(double x); bool DeQueue(double & x); bool IsEmpty() const; bool IsFull() const; int GetSize() const; v原创 2013-04-18 15:08:24 · 1957 阅读 · 0 评论 -
C++ queue应用之电路布线(迷宫的最短路径)
假如我们给定一个如下所示的迷宫,蓝色表示边界或不可通过的区域(用1表示),白色表示可以通过的区域(用0表示),绿色表示起始点,红色表示到达的终点。这样可以用一个数组表示这个Maze。我们要做的是找到从起始点到终点的最短路径。要求用4领域可通过。下面是我用 Queue 实现的寻径算法:#include "stdafx.h"#include #include "Queue.h"原创 2013-04-18 20:28:37 · 2916 阅读 · 0 评论 -
python 学习笔记二
当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 引用 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。如果你想要复制一个列表或者类似的序列或者其他复杂的对象(不是如整数那样的简单 对象 ),那么你必须使用切片操作符来取得拷贝。如果你只是想要使用另一个变量名,两个名称都 引用 同一个对象,那么如果你不小心的话,可能会引来各种原创 2013-12-17 16:18:02 · 1099 阅读 · 0 评论