![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 58
Niteip
这个作者很懒,什么都没留下…
展开
-
A*搜索算法(代码为原创)
转载说明:转自http://blog.csdn.net/walkinginthewind/article/details/6996963 A*搜寻算法,俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC(Non-Player-ControlledCharacter)的移动计算,或线上游戏的BOT(ROBOT)的移动计算上。该算法像Dijkst转载 2012-04-28 12:44:24 · 14592 阅读 · 7 评论 -
GJK算法
转自:http://blog.sina.com.cn/s/blog_833d50630100xw1r.htmlGJK算法最初用来求三维空间中凸多面体的距离(即最近距离),也因此经常用来做碰撞检测(距离是否为0)。后被推广到n维空间中求凸包之间的距离,此处用来求二维平面上2个凸多边形的距离。 GJK算法首先要解决计算Minkowski和的问题。所谓Minkowski转载 2014-03-12 10:47:27 · 9351 阅读 · 0 评论 -
GCD算法
网上代码多的是,我只是记下来而已基础int gcd(int a,int b){ int r; while(b>0) { r=a%b; a=b; b=r; } return a;}位运算int gcd(int a,int b){ while(b^=a^=b^原创 2014-02-19 10:17:04 · 9628 阅读 · 0 评论 -
No.2:完全背包问题
题目有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本思路这个问题十分类似01背包,不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种。于是得: f[i]原创 2014-02-12 20:54:15 · 1462 阅读 · 0 评论 -
No.1:01背包问题
题目:有N件物品和一个容量为V的背包。第i件物品的体积是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}原创 2014-02-11 20:00:11 · 1848 阅读 · 0 评论 -
No.3:多重背包问题
题目有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本算法因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值,则有状态转移方程:f[i][v]=max{原创 2014-02-21 14:56:23 · 1153 阅读 · 1 评论 -
一个笔试题
并不是我去笔试,在其他地方看来的求一个整数n的开方,不能使用库函数sqrt(),要求精确到0.001这个说实话,可能就是那种,知道就知道,不知道就搞不来的题。牛顿迭代法#include "stdafx.h"#include #define ABS(val) val>0?val:-valdouble mysqrt(double x){ doub原创 2013-10-28 12:15:38 · 913 阅读 · 0 评论 -
100层楼摔鸡蛋问题
昨天晚上的笔试题(多益网络),题目描述:某某有2个硬度相同的鸡蛋,所谓硬度,指鸡蛋从m楼摔下不碎,从m+1楼就碎,那么m就是此鸡蛋的硬度。现有一个100层的楼房,鸡蛋碎了就不能再用,请问最坏情况下,最少要实验几次才能测试出鸡蛋的硬度?悲剧的我理解错了题意,我想的是用两个鸡蛋摔一次,不管结果如何,就算实验一次,在原有实验基础上,拿另外两个鸡蛋做实验就是次数+1,于是很简单的二分嘛,7原创 2013-10-16 20:37:25 · 4088 阅读 · 1 评论 -
二叉搜索树简单解析
前天的笔试题,遇到了二叉搜索树,当然题很简单,回来后没事做写写吧。二叉搜索树的关键字key,一节点的左子树若存在,所有的key都是小于该节点的,同理右子树是大于该节点的。插入、查找很简单,递归的在左右子树上找删除复杂些,首先考虑只有单个子树的情况,比如是左子树,那就把左子树移上来,再将该节点删掉。如果左右子树都有,从二叉搜索树的性质可知,选左子树中最大的 或 右子树原创 2013-10-15 09:40:45 · 1137 阅读 · 0 评论 -
String类成员函数的实现
class String{public: String(const char *str = NULL); // 通用构造函数 String(const String &another); // 拷贝构造函数 ~ String(); // 析构函数 String & operater =(const String &rhs); // 赋值函数private:原创 2013-10-11 15:45:05 · 2255 阅读 · 0 评论 -
一步一步写平衡二叉树(AVL树)
转载:http://www.cppblog.com/cxiaojia/archive/2012/08/20/187776.html平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树。1962年,G.M. Adelson-Velsky 和 E.M. Landis发明了这棵树,所以它又叫AVL树。平衡二叉树要求对于每一个节点来转载 2013-09-20 08:43:29 · 66486 阅读 · 23 评论 -
快速排序
快速排序思想,在数组中找一个X,把比它小的全部放到左边,比它大的放到右边,再分别对左边和右边进行相同的操作,当递归结束时,那么数组一定有序。算法的优势是:将一个大问题分解为两个小问题,简化问题难度。在基于比较的排序中,时间复杂度的下界是O(nlogn)。证明如下:在没有比较的时候,排序的结果有n!种情况。第一次比较,由于有两种结果,所以最坏的情况下最终结果还有n!/2种可能原创 2013-09-12 19:45:27 · 748 阅读 · 0 评论 -
KMP算法
懒,随便写点敷衍下吧。KMP中的灵魂,next[]数组。next[i]记录的是一个部分匹配,模式串t,假设是tomatoabc后缀toabc中正好有开头的“to”,开与主串s匹配时,假设到toabc的b失败了,(可以认为s是。。。tomatoacb。。。),我们不必返回,直接在tomatoacb这里继续匹配。next[i]记录的,正是当前字符之前,与开头匹配的串的长度。规定,n原创 2013-09-13 12:09:22 · 910 阅读 · 0 评论 -
3字符串求最长公共自序列
如果会LCS这才看这题。 画一个三维的立体图。把x轴放s1把y轴放s1把z轴放s3 在o_x_y上匹配s1 s2在o_x_z上匹配 s1 s3在O_y_z上匹配s2 s3对于一个点(x,y,z)(x,y,z)这个点相同的话 在(x-1,y-1,z-1)的基础上加1..等等的DP,具体转移方程f[1][1] = same(1,1) f[i][j]原创 2012-05-24 10:24:04 · 979 阅读 · 0 评论 -
常见C++内存池技术
转自:http://www.cppblog.com/weiym/archive/2013/04/08/199238.html转载 2014-07-07 17:48:50 · 1133 阅读 · 0 评论