
基础算法
文章平均质量分 74
石头_奋斗
这个作者很懒,什么都没留下…
展开
-
堆排序C++源码
堆排序的思想:1.初始化创建堆,然后重复步骤2,32.交换堆顶和堆得最后一个元素,并缩小堆的大小3.调整堆,即保证待排序的数组部分始终满足堆的结构/*******************************************************//* this program is used to do a heap sort原创 2012-11-11 15:35:19 · 524 阅读 · 0 评论 -
hiho_KMP算法
经典的KMP算法,但是本人由于这周一直在乱忙,美来的及提交上,其实还是理解了好久这道提目原创 2014-07-27 21:56:25 · 765 阅读 · 0 评论 -
编辑距离问题(1)
编辑距离问题:原创 2014-07-04 20:15:20 · 743 阅读 · 0 评论 -
1000瓶毒水的问题
题目:现有1000瓶水其中有1瓶是有毒的,现在有n只小白鼠,小白鼠如果喝了毒水,会在21小时死亡,现在有24小时的时间,请问如何使用最少数目的小白鼠,在限定的时间内找到哪瓶水有毒?解题思路:1000顺序扫描每瓶水,对于每瓶水根据其标号将其转换成二进制数,根据白鼠和二进制每一位的对应情况,对于相应位为1的白鼠,我们让其喝下当前检验的水,否则不做操作。例如:对于10号瓶转载 2012-11-07 14:33:07 · 1334 阅读 · 0 评论 -
编辑距离问题(2)——DNA序列对齐
编辑距离问题是对其两个DNA序列问题的一般化,有许多通过原创 2014-07-05 16:18:37 · 4232 阅读 · 0 评论 -
Bitmap
位运算真的很神奇,最近在大牛的指点下开始渐渐接触位运算,下面简要说明一下Bitmap算法的基本操作。Bitmap算法主要是为了减少大量数据的存储空间,例如对于一个32位字长的计算机,我们要存储最大值为n且无重复数字出现的数据,我们只需要开辟n/32(取天棚)的存储空间即可,然后让空间中的每一位都标记当前的一个数,以完成存储。另外Bitmap基本操作思想与桶排序十分类似,简单C++代码如下:原创 2012-11-18 21:15:10 · 865 阅读 · 0 评论 -
Poj3301 三分法解题报告
题目要求求解覆盖所有离散在二维空间内的点最小正方形的面积,原创 2014-04-27 16:49:04 · 1428 阅读 · 0 评论 -
三分法问题个人总结&MS_活动中心问题
看了一下微软2014编程之美大赛的初赛第一阶段的题目:转载 2014-04-24 20:28:15 · 1548 阅读 · 0 评论 -
8皇后问题,回溯求所有解
综合数据库:以状态为节点的有向图 状态:8*8矩阵 初始状态: 空矩阵规则:Rij:if i=1时,矩阵中无皇后标志,或8 >= i >1时,矩阵的i-1行有一个皇后标志,then在矩阵的第i行第j列放一个皇后标记 结束条件:TERM为真时矩阵中有8个皇后标志,且不能相互俘获控制策略:回溯#include #include #include using n原创 2012-12-30 15:02:47 · 2066 阅读 · 0 评论 -
joj1026---终于知道了解数据类型的作用了
今天随便写了一个joj1026 theStaircases ,题目不难,郁闷的是,本来dp的算法是对的,但是由于我申请的是int型的数组,最终导致了运算结果的上溢,输出竟然出现了负数,郁闷死我了,找了好久也没发现错在哪,哎是该补一补基础知识了。附代码如下:#include #include using namespace std;double dp[510][510];//dp[min]原创 2012-12-12 10:54:07 · 986 阅读 · 0 评论 -
迷宫问题的双向BFS
#include #include #include #define STARTVALUE 2012 #define ENDVALUE 2013#define QUEUESIZE (1024*1024) //size of the queue for BFS#define MAXVALUE (65535)typedef enum{START=0,MIDDLE=1,END=2,UN转载 2012-11-22 13:51:13 · 761 阅读 · 0 评论 -
KnightMoves双向BFS超时
Knight MovesTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 18501 Accepted: 8482DescriptionBackground Mr Somurolov, fabulous chess-gamer indee原创 2012-11-22 18:11:57 · 676 阅读 · 0 评论 -
分油问题
已知桶、罐和瓶分别能才盛油5000克、3500克、1500克,现在桶中有5000克油,如何只利用这三件容器把油分成成两分,每份2500千克。问题分析:由于没有刻度的存在,所以对于容器A和B之间,由A向B中倒油,只有如下两种情况的操作:1.用A中的油把B填满;2.把A中的油倒尽,全部倒入B中;这样我们才能控制每个容器中的油量的多少。状态描述:三元组(A,B,C)A:桶中的油量原创 2012-11-20 17:30:29 · 2512 阅读 · 0 评论 -
传教士过河问题
三个传教士和三个食人魔来到一条河的岸边,他们想渡河到对岸去,河的这边有一条小船,只能供两个人乘坐,可以是两个传教士或一个传教士一个食人魔,或两个食人魔。但是无论在河的此岸和彼岸如果食人魔的人数超过传教士的人数,食人魔就会把传教士吃掉,问怎样利用这条船才能把它们全渡过河去。刚刚学习了产生式系统:产生式系统是人工智能系统常用的一种程序结构,通常由以下三个部分组成:综合数据库、产生式规则集和控制原创 2012-11-19 19:30:55 · 4892 阅读 · 0 评论 -
迷宫问题BFS暴搜
首先声明的是这个问题的代码并不是本人所做,我只是抱着学习的态度,在此标记如下代码。感谢算法原作者:新浪微博的“娱乐圈王一炜”,是他的帮助我才能顺利看懂这段代码,并从中学到许多知识。问题描述(来自新浪微博的:”陈利人老师“):“迷宫”题:从图左边入口处的2011进去,在迷宫里转悠,最后变成2012从右边出来。可以在迷宫里转圈,可以重复之前走过的路,但不能回退。#inc转载 2012-11-18 21:52:56 · 825 阅读 · 0 评论 -
计数排序C++源码
计数排序假设n个输入元素中的每个都是介于0道k之间的整数,此处k为某个整数。当k=O(n)时,基数排序的运行时间为O(n).计数排序的基本思想就是对每一个输入元素x,确定出小于x的元素个数。有了这一信息,就可以把想直接放到他最终输出数组中的位置上。/******************************************************************//* th原创 2012-11-14 22:09:08 · 1993 阅读 · 1 评论 -
快排C++源码
快速排序:分解:数组a[p..r]被划分为链两个(可能空)子数组a[p..q-1]和a[q+1..r],使得a[p..q-1]中的每个元素都小于等于a[q],而且,a[q]小于等于a[q+1,..r]中的元素。下表q的这个元素也在这个划分过程中进行计算。解决:通过递归调用快速排序,对子数组a[p..q+1]和a[q+1..r]排序。合并:因为两个子数组是就地排序的,将它们合并不需要操作原创 2012-11-13 21:26:13 · 839 阅读 · 0 评论 -
ThreeFlag
三色旗的问题最早由E.W.Dijkstra所提出,他所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来称之。假设有一条绳子,上面有红、白、蓝三种颜色的旗子,起初绳子上的旗子颜色并没有顺序,您希望将之分类,并排列为蓝、白、红的顺序,要如何移动次数才会最少,注意您只能在绳子上进行这个动作,而且一次只能调换两个旗子。原创 2012-11-12 11:53:28 · 389 阅读 · 0 评论 -
Hash table 的避碰策略浅谈
Hash Table Collision avoidance strategy 1、Collision resolution by chaining(closed addressing)链表法是一种可行的避碰策略。Hash table 数组的每个插槽(slot)都存储一个单链表数组,用以存储所有具有相同hash值的key-value 对。新插入的key-value对会被添加到对应单链表翻译 2014-12-19 16:44:44 · 2711 阅读 · 0 评论