- 博客(57)
- 资源 (5)
- 收藏
- 关注

原创 【数据结构与算法】——排序算法篇
由于研究生考试的需要,加上我对算法的情有独钟,这段时间一直在研究算法。跟大家分享一些我的经验和想法:一、欢迎大家批评指正我错误的地方;二、欢迎大家补偿自己的见解进来,我如果发现有独到见解的评论,我会编辑添加到文章中来,并注明。希望给大家带来好的知识分享! 为什么我们需要排序?存放数据就像我们在日常生活中存放东西一样,时不时需要整理一下,你下次拿东西的时候才方便。如果你的东西是一堆乱麻,你
2011-08-09 19:25:56
8743
2
原创 【RPC框架探索】(一)ICE框架的探索
【1】基于Linux CentOS-7的安装 cd /etc/yum.repos.dsudo wget https://zeroc.com/download/rpm/zeroc-ice-el7.reposudo yum install ice-all-runtime ice-all-devel 【2】编写一个基本的slice,保存为Printer.icemodule Demo {
2017-07-12 17:15:02
2067
原创 【程序员的手艺活儿】vim命令快速掌握
程序员每天的工作都是写代码,那么如何在构思完成后快速的完成实现就是一个小手艺了。从小的学习经验告诉我,在学习一项知识的时候,系统化是最科学的方法。这篇文章就是按照编辑代码的思维方式来梳理一遍vim中的命令。基本模式切换 命令 作用 i 在当前光标前的位置,进入到插入模式 a 在当前光标后的位置,进入到插入模式 I 在行首的位置,进入到插入模式 A 在行尾的位置
2017-07-03 16:13:54
853
原创 topcoder-srm-233-div2
#include #include #include #include using namespace std;class JustifyText{public: vector format( vector text ){ /*find the max length*/ int max_length = 0; for(int i=0; i<text.size();
2013-01-06 16:05:42
1009
原创 topcoder-srm144-div
#include #include #include using namespace std;class BinaryCode{ public: vector decode(string message){ //prepare the basic return value vector result; result.push_back( "NONE" );
2013-01-06 15:01:29
1110
原创 从斐波那契数列简单谈程序的几个层次
写一个生成斐波那契数列的程序,初学计算机迟早会写那么一次,至少看过别人的代码一次。一、小鸟层次int fibonacci_a(int n){ if( n== 0 || n==1 ) return n; else return fibonacci_a(n-1) + fibonacci_a(n-2);} 其实我相信100个程序员里面有80个能写出这样一个程序。
2012-06-14 21:35:39
1873
转载 如何学好3D游戏引擎编程
如何学好3D游戏引擎编程管理提醒: 本帖被 gamengines 从 游戏引擎(Game Engine) 移动到本区(2010-11-04)此文为转载,但是值得一看。此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰——阿哲VS自己 QQ79134054多希望大家一起交
2012-05-18 15:03:33
2159
原创 ACM题目小经验
1.有时遇到定义成局部变量就AC,定义到全局就WA的情况,多半是因为这个变量每次都需要初始化,而全局的时候只被初始化一次。在决定使用局部变量还是全局变量的时候应该先思考其初始化(是否需要针对每个case都初始化)的情况。2.字符串char *a="abcd"; 是正确的,但如果a[0]=a[0];则会出现错误,所以字符串优先考虑存为char[ ]数组的形式,或者使用c++string3.s
2012-02-29 15:36:34
742
原创 【数据结构与算法】二叉堆
核心操作是sift_up,和sift_down,其他所有操作都是建立在这两个核心操作的基础上的,事实上所有的堆结构都可以使用这两个操作。const int maxsize = 10001;int size = 0;int min_heap[maxsize];/*0号单元不使用,因为如果使用0单元,则k/2无法找到其父结点*/void sift_up(int k)//从第k个位置
2012-02-24 20:52:54
856
原创 【算法分析与设计】广度优先搜索
图论的广度优先搜索经常用于对解空间的搜索,尤其是求某个解,且这个解具有最短步骤的时候,广度优先搜索是极佳的选择。1.首先应该注意的是解空间的组织,搜索算法的解通常被安排成多个步骤,每个步骤一条边,而从起点到终点的一条路径就构成了一个解。2.解空间树的存储问题,由于解空间的树,往往并不是二叉树,所以左右孩子的组织方式是不太适合的,所以一般采用记录父结点的方式,那么从终点到起点就一定可以找到一
2012-02-22 21:12:19
1373
原创 【算法分析与设计】全排列问题
给出一个字符串“ABCDEF”,输出它的全排列,这是一个基础的数学问题,目前已知的比较好的算法是基于交换的。inline void swap(char &a,char &b){ char t=a; a=b; b=t;}void Perm(string arr,int n,int k=0)//一共n个元素,现在排到第k个了{ if(k==n)/*所有元素都已经排完,输出结果*/ {
2012-02-18 09:39:13
2587
原创 【算法分析与设计】最小生成树问题
最小生成树问题,主要的解法有两种,一种是Prim算法,不优化的时候是O(n^2)的时间复杂度,一般在稠密图的时候考虑使用。另一种是Kruskal算法,使用幷查集使用的复杂度是O(eloge),一般在稀松图的时候比较有利,所以一般Prim算法采用邻接矩阵,Kruskal一般采用邻接表。朴素的Prim算法(未使用堆优化)思路是:closedge 记录各节点到当前生成树的距离(到这棵生成树的最短
2012-02-11 12:37:24
2897
原创 【数据结构与算法】左偏树(堆)的实现
左偏树,也可以称之为左式堆。称其为树,是因为其存储结构通常采用二叉树,所以可以认为是一种特殊的二叉树。称其为堆,是因为在逻辑结构上,它属于可合并堆的一种。其实数据结构中最欣欣向荣的两个分支就是:平衡树 和可合并堆。高级树结构的核心都是围绕如何使树到达平衡而展开,高级堆结构的核心就是如何有效地进行合并。 这里先介绍可合并堆中一种十分好用的数据结构:左式堆。人们熟悉或者常听说的堆主要
2012-02-10 10:26:31
7918
1
原创 ACM常见问题
ACM中的许多问题都是已有良好结论和算法的题目,如果不知道这些题目,临战而思,时间是多半不够,所以对这些经典问题的解读要十分熟悉。子段、子序列问题:longest common sequence(LCS)longest increase sequence(LIS)longest common increase sequence(LCIS)maximum subarray pro
2012-02-06 17:42:34
1669
原创 ACM常用数据结构
基本结构高级结构题单集合结构 幷查集POJ 1182POJ 1308POJ 1611POJ 1986POJ 1988线性结构数组栈队列双端队列POJPOJPOJPOJPOJ树状结构二叉树
2012-02-06 16:45:38
8337
原创 【算法设计与分析】最短路径的算法
暂不讨论人工智能的启发式算法,那么最短路径算法主要有Dijkstra、Bellman-Ford、Floyd,前两者是单源最短路径,Floyd是全源最短路径,当然单源算法也可以通过枚举实现全源算法。而近来颇为流行的SPFA算法应该算是Bellman-Ford算法的队列实现,三者主要区别如下:Dijkstra 算法的特点每次选择的边一定是最终最短路径上的边不允许出现负边
2012-02-02 22:21:28
4288
原创 POJ-1067:取石子游戏
时间限制: 1000ms 内存限制: 65536kB描述有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。输入输入包含
2012-02-01 19:27:58
1300
原创 【算法设计与分析】三个博弈论算法分析
主要讨论三个比较常见的博弈游戏Bash Game,Nim Game和Wythoff Game,较为领人惊叹的是,他们最后都是通过数论或者自然数性质完美解决:Bash Game:同余理论Nim Game:异或理论Wythoff Game:黄金分割(1)Bash Game:一堆n个物品,两人轮流取,每次取1至m个,最后取完者胜 比如10个物品,
2012-02-01 13:14:31
14331
原创 POJ-2234:Matches Game
时间限制: 1000ms 内存限制: 65536kB描述Here is a simple game. In this game, there are several piles of matches and two players. The two player play in turn. In each turn, one can choose a pile and
2012-01-31 14:26:49
5621
原创 【算法设计与分析】最大子段和问题
最大子段和问题的简洁描述是:对于给定序列[ x1,x2,x3...]寻找它的某个连续子段,使得其和最大。如{ -1,5,-2,1,-7,-4,2,3,-1,2 }最大子段是{ 2,3,-1,2 }其和为6。这个问题可以从枚举、分治、动态规划,贪心这几个角度来解。(1)枚举解法思路:对于数组a[n],其连续的子段有 以a[0]开始的 , { a[0] }, { a[0],
2012-01-29 22:08:11
5579
原创 POJ-1042:Gone Fishing
时间限制: 2000ms 内存限制: 65536kB描述John is going on a fishing trip. He has h hours available (1 <= h <= 16), and there are n lakes in the area (2 <= n <= 25) all reachable along a single, one-w
2012-01-28 21:00:24
1902
原创 POJ题目分类
POJ题目分类枚举许多题目是可能观察出所有的可能解的,解的数量通常会小于等于指数级,稍好的情况是解的数量为多项式级。换句话说,许多题目至少有指数级的蛮力搜索解法。在没有其他解法,或者数据量很小的时候,可以尝试枚举。1.抽象问题,寻找解的表示方法,好的表示方法常常是枚举法的关键2.给出正解的判断标准3.对所有解依次枚举判断,注意遍历次序,不要出现重复和无限循环
2012-01-27 18:09:07
2823
原创 【杂谈社会分工和我们的软件业】
每天清晨,我们睁开眼睛,开始经历又一天的生命旅程——为每天的成就而欢欣,为每天的困苦而烦恼,为每天的温暖而感动,为每天的麻木而叹息。我们被幸福浇灌,被苦难磨砺,被自己改造!其实,偶尔不妨停足片刻,思量一二。我们的世界究竟是什么?我们究竟为什么而活?这并非空虚无聊而故作高深,实只为了让自己看清脚下漫漫前路。 第一,我们生活在60亿人的星球,有200个左右的国家。不同的国家由于地理、历史的原
2012-01-24 15:10:19
1557
原创 POJ-4022:买房子
时间限制: 1000ms 内存限制: 65536kB描述某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子(第一年房价200万,收入N万)输入有多行,每行两个整数N(10输出针对每组数据,
2012-01-21 00:45:16
3054
原创 POJ-4013:中位数
时间限制: 2000ms 内存限制: 65536kB描述中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数或最中间两个数据的平均值(如果这组数的个数为奇数,则中位数为位于中间位置的那个数;如果这组数的个数为偶数,则中位数是位于中间位置的两个数的平均值).给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)
2012-01-21 00:24:06
2926
原创 POJ-4002:谁是潜在的朋友
时间限制: 1000ms 内存限制: 65536kB描述“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…
2012-01-21 00:09:47
1736
原创 POJ-2750:鸡兔同笼
时间限制: 1000ms 内存限制: 65536kB描述一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物输入第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a (a 输出输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物
2012-01-20 23:55:56
2865
原创 【算法设计与分析】全源最短路径的Floyd算法
首先给出Floyd算法的实现代码const int vexnum = 5;const int maxval = 65536;/*图中表示不可达的长度*/void Floyd(int G[][vexnum],int dist[][vexnum],int path[][vexnum]){ for(int i=0; i<vexnum; ++i) for(int j=0; j<vex
2012-01-18 22:19:11
2002
原创 【程序语言】C++ Lambda函数 的讨论
函数式编程的便利在Haskell的map中令人映象深刻,比如对一个列表 [1,2,3,4,5,6,7,8,9,10] 的所有元素实施+1操作只需要map(+1)[1..10]就可以得到=> [2,3,4,5,6,7,8,9,10,11]有兴趣的可以到 http://tryhaskell.org/ 尝试一下Haskell,非常优美的一门语言。而C++也开始在新的标准中
2012-01-18 20:38:27
1001
2
原创 POJ-1666:Candy Sharing Game
1666:Candy Sharing Game时间限制: 1000ms 内存限制: 65536kB描述A number of students sit in a circle facing their teacher in the center. Each student initially has an even number of pieces of
2012-01-17 23:04:46
1713
原创 POJ-2562:Primary Arithmetic
时间限制: 1000ms 内存限制: 65536kB描述Children are taught to add multi-digit numbers from right-to-left one digit at a time. Many find the "carry" operation - in which a 1 is carried from one digi
2012-01-17 23:00:02
2667
原创 POJ-1008:Maya Calendar
1008:Maya Calendar时间限制: 1000ms 内存限制: 65536kB描述During his last sabbatical, professor M. A. Ya made a surprising discovery about the old Maya calendar. From an old knotted message,
2012-01-17 22:53:46
1203
原创 POJ-1007:DNA Sorting
1007:DNA Sorting时间限制: 1000ms 内存限制: 65536kB描述One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are out of order with respect to each other. For
2012-01-17 22:48:35
4474
原创 POJ-1006:Biorhythms
1006:Biorhythms时间限制: 3000ms 内存限制: 65536kB描述Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the phy
2012-01-17 22:43:22
619
原创 POJ-1004:Financial Management
1004:Financial Management时间限制: 1000ms 内存限制: 65536kB描述Larry graduated this year and finally has a job. He's making a lot of money, but somehow never seems to have enough. Larry
2012-01-17 22:39:24
624
原创 POJ-1003:Hangover
1003:Hangover时间限制: 1000ms 内存限制: 65536kB描述How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length.
2012-01-17 22:33:12
1142
原创 【程序语言】并行编程——openMP初探
(1)openMP的配置(windows平台+vs2010)。在Visul Studio中配置openMP十分简单,只需打开“项目 - > 属性 - > C/C++ - > 语言”中将“OpenMPI支持”选为"是" 如下图所示: 这样你就可以开始OpenMP之旅了。(2)下面开始我们最简单的OpenMPI语句,hello world!#include
2012-01-16 21:32:30
7502
原创 【数据结构与算法】——链表篇
链表属于线性结构之一,主要功能是提供可动态扩展的线性结构,可使用不连续的的内存空间,为程序的动态特性提供支持。逻辑结构如下(图片引用自优快云博客) 一般的定义如下/*The Data Structure of Link List*/typedef int DataType;typedef struct LinkNode { DataType
2012-01-16 15:49:41
4259
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人