算法
Golden_Shadow
做一名优秀的游戏程序员
展开
-
各种排序GP版
几种排序,用了很多STL函数.贴了.// sort.cpp// 2011-10-09-21.41 -- 2011-10-09-21.55 -- insertionSort.// 2011-10-13-06.25 -- 2011-10-13-06.46 -- bubbl原创 2011-10-16 19:12:18 · 1376 阅读 · 4 评论 -
算法导论22.1-6
找到一个矩阵表示法的有向无权图中的"汇",定义为,入度为|V| - 1,出度为0的顶点.这样的顶点,一个图中只能有一个.或者没有.这个问题,是以前没有接触过的,觉得很有用,所以去写了下. 起初写的东西,很糟糕.我给带出来了,起初的想法,孩子一样纯真.确实效率不高.而且浪费空原创 2011-08-12 23:03:50 · 1452 阅读 · 0 评论 -
有向无环图单源点最短路径C++
有向无环图上的单源点最短路径算法,用到了拓扑排序,很好的思想. 给出了用到的函数,贴出来咯.// DAGShortestPathCalculate.cpp -- 2011-09-05-18.35// private methods declare.void m_原创 2011-09-12 09:18:49 · 1314 阅读 · 0 评论 -
单源最短路径BellmanFord算法主例程C++
// graph.cpp -- 2011-09-02-21.20#include "stdafx.h"#include "graphRepresentAsAdjacentList.h"#include #include const int Size = 5原创 2011-09-04 15:29:40 · 725 阅读 · 0 评论 -
单源最短路径BellmanFord算法实现文件C++
// graphRepresentAsAdjacentList.cpp -- mplement file#include "stdafx.h"#include "graphRepresentAsAdjacentList.h"// Purpose:// Defi原创 2011-09-04 15:25:05 · 991 阅读 · 0 评论 -
算法导论16-1
又是一道动态规划的题,真的类似于0-1背包问题.在提示之下解决了,总算是解决了.虽然没费多少劲. 这个东西,没有用面向对象的方式写.体验了一把,结构化.对于参数传递,共享数据,的确不及类方便. 这种问题的状态转移方程,没有写对.我找错了状态.这段时间看>,感觉自己的代码风格有原创 2011-07-20 17:46:00 · 2990 阅读 · 0 评论 -
全排列打印C++
这个东西,实在实在是说不好.在前一段的时候,考虑别的问题的时候想到这个问题.自己研究了下,又上网看了一下,总算是有了个结果.至于更深入的,也没有去考虑.这个死角,触到了就好. 最近重点Win32API,算法方面内容不多.不过,过一阵应该会多起来吧. 贴.// wholePer原创 2011-07-17 11:38:40 · 980 阅读 · 0 评论 -
棋盘类头文件C++
// Chessboard.h#include #include #include #include "Chessman.h"// Ignore examining parameter and error.class Chessboard: priva原创 2011-07-08 12:10:44 · 1018 阅读 · 0 评论 -
算法导论15-6
这是我第一次真正意义上的完成动态规划问题.这个问题,并不难.按照各个步骤进行: 1.最优子结构. 2.重叠子问题. 3.列出状态转移方程. 4.写出递归式. 5.构造最优解. 最主要的,就是状态转移方程的那个步骤.一度让我黯然.好在,后来,自己从"状态转移"这四个字发原创 2011-07-08 12:16:53 · 1518 阅读 · 0 评论 -
棋盘类实现文件C++
// Chessboard.cpp#include "stdafx.h"#include "Chessboard.h"// private:int Chessboard ::m_weightValue (void){ int weightValue =原创 2011-07-08 12:11:43 · 1084 阅读 · 1 评论 -
棋子类实现文件C++
// Chessman.cpp#include "stdafx.h"#include "Chessman.h"Chessman ::Chessman (const int weightValueTowardsTopLeft, const int weightVal原创 2011-07-08 12:10:00 · 883 阅读 · 0 评论 -
棋子类头文件C++
// Chessman.h// Because class Chessboard will include Chessman and it will access m_weightValue of class Chessman// and m_weightValue原创 2011-07-08 12:09:22 · 785 阅读 · 0 评论 -
算法导论22.1-3
转置邻接表表示的无向、有向图.没有给出头文件,因为考虑到最近的头文件经常要append一些新东西,所以现在不给出来了. 实现的时候用了位操作的方法,目的是标记.避免了V^2的空间浪费.当然了,只能应对整型的数据了.其实对浮点型应该也是可以的,但是位操作就不是这样的了.也是可原创 2011-08-12 22:41:51 · 1035 阅读 · 0 评论 -
有向图的拓扑排序C++
用的是深度优先搜索,跟我半年前用的检查顶点入度的方法不同.自觉这个东西我玩得还不透,确实还不透. 这个东西,用了些STL,虽然还没有开始系统地学习STL,现在会的就先用上吧. 没有给出全部代码,给出了函数定义.最近都不会给出头文件之类的代码,因为老变,我也不喜欢发重复原创 2011-08-18 22:14:53 · 1350 阅读 · 0 评论 -
最大流Edmonds-Karp算法驱动文件C++
最大流算法.在有向图上运行的算法.在出现算法介绍之前,先给出了各种概念.残余网络,增广路径,割.实现很直观,用到了广度优先搜索.O(VE)的运行时间. 算法的分析与证明我没有关注,呵呵.// Edmonds-Karp.cpp#include "stdafx.h"原创 2011-09-28 15:40:17 · 1107 阅读 · 2 评论 -
最大流Edmonds-Karp算法实现文件C++
// graph.cpp -- implement file.// 2011-09-25-14.31 -- 2011-09-25-15.58// 2011-09-25-18.16 -- 2011-09-25-20.00// 2011-09-26-17.20 -- 20原创 2011-09-28 15:34:48 · 1097 阅读 · 0 评论 -
单源最短路径BellmanFord算法头文件C++
老样子,跟着算法导论走.// graphRepresentAsAdjacentList.h -- graph header file.// 2011-09-02-19.38 -- 2011-09-02-21.47// Purpose:// Define a c原创 2011-09-04 15:23:27 · 1009 阅读 · 0 评论 -
最大流Edmonds-Karp算法头文件C++
用了类模板,不知是不是多此一举,反正练习为主.// graphRepresentAsAdjacentMatrix.h -- graph header file.// Purpose:// A graph represent as a adjacent matrix原创 2011-09-28 15:34:09 · 1131 阅读 · 0 评论 -
最小生成树prim算法C++
以前也写过,这次看>决定写一下.总不写东西的话,脑袋就笨笨了.用到的东西都在前面的图实现里. 要说啊,不久之后,用STL+DLL写出来,呵呵.加油吧.// graph.cpp -- 2011-08-28-21.20#include "stdafx.h"#incl原创 2011-08-29 20:36:04 · 1206 阅读 · 2 评论 -
求平方根C++
求平方根,正根.以前都不会.昨天看数学,看到了,写了出来.自己又小优化了一下,很不错.// squareRoot.cpp -- 2011-08-29-01.04#include "stdafx.h"#include double squareRoot (dou原创 2011-08-29 20:11:29 · 3520 阅读 · 0 评论 -
计算有向无环图中两个结点的路径数C++
路径搜索,搜索到目标结点的时候算作一条路径.不会有两条一致的路径,但两条不同的路径可以有相同的部分. 同样只是给出了函数定义,贴.// 2011-08-19-21.14 -- 2011-08-19-21.36 by Golden_Shadow.// --------原创 2011-08-22 17:40:22 · 2225 阅读 · 0 评论 -
寻找有向无环图中的强连通分支C++
话说,半年前接触过这个东西.昨天又接触,发现书上给的方法很好.去一趟DFS,回来按照去的完成时间,即从后往前再次对转置了的原图进行DFS.就是这样. 话说啊,来到了网吧,没带身份证,在二楼跟一群男童在一间屋子...传完了出去准备晚饭,貌似今天心情突然好起来了. 同样只原创 2011-08-22 17:44:37 · 1215 阅读 · 0 评论 -
所有顶点间最短路径FloydWarshall算法主例程C++
这个东西,是新学的.上一本书虽然有学过图,但是,这个问题还是没有学到,这一次,学到了.前前后后2天,写出来了. 最近的主要精力在C++与> 还有 线性代数,算法的东西实在是前进得不多. 还好,通过今天上午的努力,知道自己的脑袋,还没有退化.真的,每次实现了一个算法,都原创 2011-09-17 12:28:05 · 918 阅读 · 0 评论 -
所有顶点间最短路径FloydWarshall算法实现文件C++
一个稍微特殊点的地方就是 min() 函数,考虑到要面对 Infinity 的情况,作乐多种检查来应对. 不仅可以计算出每对顶点间得最短路径,还支持打印路径.看书学,自己又一顿琢磨.懵的也好,会的也好,是睾出来了.下次再遇到这个问题,最起码的,知道有一种方法可以解决,哪怕不原创 2011-09-17 12:23:40 · 1149 阅读 · 4 评论 -
所有顶点间最短路径FloydWarshall算法头文件C++
你看,禁止了合成复制构造函数和合成赋值操作符,这些都是新学的. 其他的,就比较直观了.// graphRepresentAsAdjacentMatrix.h -- graph header file.// Purpose:// A graph represe原创 2011-09-17 12:19:57 · 900 阅读 · 0 评论 -
线性期望时间选择问题C语言
<br /> 话说,选择第N个最小值的问题,从前是有恐惧的.今天看了一下,<<AtA>>关于这个方面的问题,受益匪浅.虽然,刚刚一个很简单的选择问题,我都写了一个小时,但只有自己在实现代码的时候,才知道是不是真的理解了.而且,这个东西不能凭记忆区一句一句写,那样写不出的.<br /> 思想就是,不断找出当前数组中一个确切的位置,可知当前位置之前有多少个元素小于等于该位置上的值,进而通过将该位置同目标位置进行比较.不断缩小范围,最终达到目的.<br /> 运行时间方面,是 θ(N). 分析过程很数学,我原创 2011-05-02 20:49:00 · 1925 阅读 · 0 评论 -
算法导论15.4-4
(min (m, n))空间求出最长公共子序列的长度.这个问题琢磨了好久,终于还是睾出来了. 实现的思想就是,从两个串中选出一个较长的串.用另外一个串的所有,同较长串的当前值比较.只记录最大的长度,最终完成. 说的,比较简单.研究过程,还算一般.全下来大约4小时.是慢还是快?貌似很慢啊,希望自己今后养成高速解决问题的习惯吧. 还有啊,网吧是在是太吵了...原创 2011-06-26 10:53:00 · 2710 阅读 · 0 评论 -
算法导论14.3-4
找出所有符合区间条件的结点,并返回这样的结点的个数.很简单,中序遍历就可以了.int SearchAll (const Item min, const Item max) ;int IntervalTree :: m_SearchAll (const Node * const pn){ static int count = 0 ; if (pn) {原创 2011-06-04 14:17:00 · 1825 阅读 · 0 评论 -
模拟电路板布局头文件C++
// block.h -- 模拟集成电路板头文件#include #include "intervalTree.h"namespace block{ using tree :: Item ; using tree :: Node ; using tree :: IntervalTree ; typedef struct block { Item xMi原创 2011-06-04 13:59:00 · 1018 阅读 · 0 评论 -
算法导论14.3-6
这个问题是,这样的.N个正整数,找出其中两个数的差中最小的非负差. 用到了一种数据结构,是从二叉树扩张而来的.我给起了个名字,近亲树...呵呵. 说到底,这个问题,体现出来的就是,数据结构的扩张,利用数据结构,解决问题.真的很好. 嗯.不多说了,关键的部分在其余的两个文件里,这个是驱动例程文件.// Ata14.3-6.cpp -- 2011-06-03-0.07原创 2011-06-04 13:54:00 · 1089 阅读 · 0 评论 -
模拟电路板布局实现文件C++
实现文件.里面的细节,关系到输出的方式.可以选择多种输出方式,没有大肆包装.// block.cpp -- 模拟集成电路板实现文件#include "stdafx.h"#include "block.h"namespace block{// private: void Test :: m_Merge (const int left, const int le原创 2011-06-04 14:02:00 · 1050 阅读 · 0 评论 -
算法导论14.3-3
呵呵.单独开个文章,纯属广告啊.不过,内容倒是货真价实的.Node * Search (const Item min, const Item max) ;Node * IntervalTree :: m_Search (Node * pn) const { Node * pMinMin ; if (pn) {原创 2011-06-04 14:15:00 · 2181 阅读 · 0 评论 -
算法导论14.3-7
HOHO~~.话说好久没有长时间地钻研算法问题了,这次钻研了好几道,写出来了.感觉非常不错.而且,网吧旁边没有人,想写什么就写什么,哈哈. 问题描述是这样的,一块电路板,上面镶嵌电气元件,涉及到分布问题.因为可能出现两块元件出现覆盖的问题,嗯.这就是问题的基本描述,接下来说下去.理所当然地使用区间树来解决这个问题,先将输入块按照X坐标排序,从而得到坐标的范围.只检查这个范围就好了.接下来原创 2011-06-04 14:11:00 · 1336 阅读 · 0 评论 -
统计序列中逆序对数量C语言
<br /> <<算法导论>>里面的一道题.今天上午看的东西.<br /> 逆序对,举个例子,A[0] > A[1],则A[0]和A[1]是一对逆序对.呵呵.按照书上所说,用归并排序实现.我给实现了.<br /> 思路很清晰,很享受研究算法的过程.<br />/* 2-4-11-04-06-13.16.c -- 第二章第四题 */#include <stdio.h>#include <stdlib.h>#define SIZE (27)int main (void) ;in原创 2011-04-06 14:50:00 · 3768 阅读 · 0 评论 -
计数排序C语言
计数排序,白天手机看维基百科看到的.对付数据跨度小的 int 型数据,的确很快.代码,很直观./* count_sort-11-03-21-19.01.c -- 计数排序 */#include #include #define SIZE (10)int main (void) ;int countSort (int * const array, const int size) ;void printResult (const int * const array, const原创 2011-03-21 20:18:00 · 1674 阅读 · 0 评论 -
收费公路重建问题(可发现所有同度点集)C语言
这个东西,整个白天都在想.到现在,也不是很清楚.但,代码写出来了,回溯部分总是不自信的感觉. 核心的思想就是:传递给例程一个数组指针,之后用一个 static int 类型变量保存点集的个数.即每次使集合为空,就执行 count++ ; 无论是否成功产生点集,都进行回溯.通过对决策树的分析,在每次调用 place () 结束之后,都通过上一个点集的内容对 distance 进行恢复.主要的逻辑障碍就在这里了.哎,不深扣了,扣不起啊. 因为是寻找所有的可能,所以可能会有重复的点集出现. 注释写得很原创 2011-02-21 21:54:00 · 2220 阅读 · 0 评论 -
收费公路重建问题C语言
贪婪算法.话说这东西也是经历过各种磨难才写出来的.写出来之后,就不想再多说些什么了./* 10-40-11-02-16-06.10.c -- 第十章第四十题 *//* 02-18-01.54 完成.大概用了13小时. */#include #include #define FALSE (0)#define TRUE (1)typedef int Item ;typedef int BOOL ;/* Data is a kind of data structur原创 2011-02-21 21:33:00 · 2548 阅读 · 0 评论 -
随机数生成器C语言
<br /> 这个东西,对于数学上的分析我看明白了90%.但并未做深入研究.这个代码是抄来的,核心部分是抄来的.感觉不错.<br /> 生成固定的随机数序列,只要种子一样的话.这个随机数生成器比较透明,而且较容易改动.很不错.<br /> 每次实现代码的时候,都会发现很多问题.而且,一旦写上了代码,时光就飞逝了...很不错.<br /> 好吧,帖出来吧.又是来网吧,又是边下电影边写Blog,呵呵.很不错.<br />/* 10-35-11-02-08-20.11.c -- 第十章第三十五题 */原创 2011-02-08 21:57:00 · 2097 阅读 · 0 评论 -
动态规划--装配线调度问题
不想多说,关于这个.遗憾的是,没能够按照正序输出选择.只是算出了最小的代价.不着急,不久后会的.// fastWay.cpp -- 2011-06-07-16.19#include "stdafx.h"#include const char STATION_ONE = 1 ;const char STATION_TWO = 2 ;int fastes原创 2011-06-10 11:50:00 · 921 阅读 · 0 评论 -
快速排序尾递归版C语言
看>,一道题.尾递归,循环换递归.思想很好,用处很大. 没有华丽的性能提高,只是展现尾递归的思想.确实,快速排序我还并未搞懂.先继续进行吧. 贴~ /* 2011-04-20-21.32.c -- 快速排序尾递归版 */#include #include #define SIZE (22)int main (void) ;void printArray (const int * const array, const int size) ;void swap (int原创 2011-04-20 21:59:00 · 2003 阅读 · 2 评论