算法与数据结构
文章平均质量分 75
dancingrain
上天给了我梦,我为她寻天地
展开
-
快速求小于N的所有素数
首先,贴上实现的源代码://// main.cpp// testC++1//// Created by fei dou on 12-7-26.// Copyright (c) 2012年 vrlab. All rights reserved.//#include #include using namespace std;void primeLessThanN原创 2012-07-27 09:44:39 · 1534 阅读 · 0 评论 -
求用一维数组表示的矩阵的乘积
版权所有,转载请注明出处!这里并不是着重也算法效率的提升,而是以一种更能够让人们读懂的方式进行书写程序,这里我写了三个程序,分别使用三种编程方式进行书写,希望读者能够找到更加适合自己的方式。1.直接按照一维数组的习惯操作:#include #define N 3using namespace std;int main (int argc, const char原创 2012-08-07 11:02:50 · 2568 阅读 · 0 评论 -
大整数加减乘除及取模运算 C++实现
最近事情实在是太多了,一直没有时间写博客,昨天刚刚忙完硕士开题,虽然还是有很多的事情要做,但实在是不想弄了。想起一个月之前就已经写完的一个大整数加减乘除法的程序,今天把它贴出来和大家分享,目前我只是做了简单的测试,可能程序中还存在不好的bug,也希望大家能一块帮着指出其中的错误!!希望和大家一块学习共勉 .....首先是实现大整数的头文件:BitInt.h#ifndef DO原创 2013-12-10 21:21:09 · 13097 阅读 · 10 评论 -
随机读取文件中一行数据
随机读取文件中一行数据问题描述:对于一个事先不知道有多少行的文件,设计一种算法,能够快速地随机读取文件中的一行数据。思路1:先统计文件又多少行数据,假设共有N行。然后根据k = rand()%N得到选择的行,再从文件头开始,逐行读取,一直到第k行,作为随机读取的一行数据。这种思路简单直白,但是效率不高。思路2:只读取一遍文件,就能以相同的概率选出文件中的一行数据。具体做法是使用一个变量原创 2014-01-05 17:13:52 · 3958 阅读 · 0 评论 -
Dijkstra算法的C++实现
版权所有,转载请注明出处!本文使用邻接矩阵存储图,使用邻接链表存储图的相应的算可以参考用邻接链表数据结构存储图 并实现Dijkstra算法。里面附有具体的实现代码。对于该算法的实现思想网上已经有很多,所以这里只是简单介绍原理,重点在于实现代码。Dijkstra 算法,又叫迪科斯彻算法(Dijkstra),算法解决的是有向图中单个源点到其他顶点的最短路径问题。举例来说,如原创 2012-08-07 23:15:16 · 22388 阅读 · 5 评论 -
用邻接链表数据结构存储图 并实现Dijkstra算法
对于还不明白Dijkstra算法的可以到网上随便搜一下,有大量的资料,同时也可以参看我的另一篇博客:http://blog.csdn.net/doufei_ccst/article/details/7841311,在这篇博客中是以邻接矩阵来实现Dijkstra算法的。用邻接链表数据结构存储的图的Dijstra算法的实现代码可以参看我的代码分享:https://github.com/craz原创 2013-10-17 23:51:33 · 5987 阅读 · 0 评论 -
逆波兰式计算
本题目来源于LeetCode,计算逆波兰式的值,具体如下:Evaluate Reverse Polish Notation Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are +, -, *, /. Each o原创 2014-03-26 11:18:39 · 1354 阅读 · 0 评论 -
双向冒泡排序
双向冒泡排序原创 2014-04-19 11:00:12 · 954 阅读 · 0 评论 -
网易有道笔试题(2014届,2013.10北邮站)
从网上看到网易有道2014届校园招聘的笔试题目,简单的做了一下编程和算法部分,都是一些平常遇到的题目,留一个笔记。总共有两道编程题目,要求写出可以运行的C/C++代码或者Java代码,第一个编程题如下:(不是太清楚,但勉强能看)对于这道题,应该是考察对于字符串的处理能力,应该是比较基础的题目。从题目的描述我们可以将要转换的字符串组合分成两大类1,普通的字符串,不进行原创 2013-10-16 14:45:01 · 6485 阅读 · 5 评论 -
单链表插入排序算法
如果数据存储在一段连续的内存上,比如数组中,插入排序算法的实现相信大家都yij原创 2014-04-06 16:59:36 · 2205 阅读 · 0 评论 -
单链表排序(快速排序、归并排序)
本题目来源于LeetCode,具体如下:Sort a linked list in O(n log n) time using constant space complexity.题目要求复杂度O(nlogn),因此我们很自然考虑使用快速排序或者归并排序,但是后来经过实践证明,使用快速排序总是AC超时,归并排序则可以正确AC。分析一下原因,个人认为是与测试数据有关,因为快速排序不能原创 2014-03-26 22:53:47 · 18463 阅读 · 4 评论 -
LRU Cache 实现
LRU Cashe实现LeetCode上有着样一道题目:Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.get(key) - Get the value (wil原创 2014-04-07 11:58:54 · 9932 阅读 · 0 评论 -
翻转字符串中的单词
本题目来自LeetCode,具体如下:Given an input string, reverse the string word by word.For example,Given s = "the sky is blue",return "blue is sky the".click to show clarification.Clarification原创 2014-03-26 10:06:08 · 1055 阅读 · 0 评论 -
重新排列链表
LeetCode : Reorder List原创 2014-04-07 19:49:53 · 850 阅读 · 0 评论 -
最多共线点的数目
本题目来自LeetCode,具体内容如下:Max Points on a Line Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.题目叙述很简单,就是给定2D平面上的N个点,从这些点中原创 2014-03-26 15:13:39 · 5602 阅读 · 1 评论 -
二叉树遍历之非递归实现
二叉树遍历之非递归实现 二叉树遍历算法的重要性大家都知道,是很多算法的基础,它的递归实现非常简单,相信学过数据结构的同学都应该能够轻松写出来。如果需要写出二叉树的前序遍历、中序遍历以及后续遍历的非递归实现,可能还是需要费点时间。下面给出我的实现方式。前序遍历: 二叉树的前序非递归实现可以按照这样的思路:毫无疑问,我们需要一个栈来作为辅助空间,首先将根节点入原创 2014-04-07 17:00:05 · 1150 阅读 · 0 评论 -
贪心算法实现霍夫曼编解码
版权所有,转载请注明出处!霍夫曼编码是一种被广泛应用而且非常有效的数据压缩技术,根据待压缩数据的特征,一个可压缩掉20%~90%。这里考虑的数据指的是字符串序列。要理解霍夫曼编码,先要理解霍夫曼树,即最优二叉树,是一类带权路径长度最短的树。路径是指从树中一个结点到另一个结点之间的通路,路径上的分支数目称为路径长度。树的路径长度是从树根到每一个叶子之间的路径长度之和。结点的带权路原创 2012-08-12 14:00:20 · 2873 阅读 · 1 评论 -
判断链表中是否有环 ----- 有关单链表中环的问题
首先,关于单链表中的环,一般涉及到一下问题:1.给一个单链表,判断其中是否有环的存在;2.如果存在环,找出环的入口点;3.如果存在环,求出环上节点的个数;4.如果存在环,求出链表的长度;5.如果存在环,求出环上距离任意一个节点最远的点(对面节点);6.(扩展)如何判断两个无环链表是否相交;7.(扩展)如果相交,求出第一个相交的节点;原创 2013-08-30 14:46:06 · 7722 阅读 · 4 评论 -
JOJ 1007解题
1007: TrianglesResultTIME LimitMEMORY LimitRun TimesAC TimesJUDGE3s8192K70202611StandardA triangle can be made up out of dots, like the on原创 2012-07-30 16:09:33 · 455 阅读 · 0 评论 -
JOJ 1006解题
1006: All your baseResultTIME LimitMEMORY LimitRun TimesAC TimesJUDGE3s8192K61952080StandardGiven a base, and two positive integers in dec原创 2012-07-30 15:35:54 · 443 阅读 · 0 评论 -
单项链表逆序
版权所有,转载请标明出处!程序1://// main.cpp// testC++06ReverseSingleLinkedList//// Created by fei dou on 12-8-9.// Copyright (c) 2012年 vrlab. All rights reserved.//#include using namespace std原创 2012-08-09 16:58:09 · 723 阅读 · 0 评论 -
动态规划解决0-1背包问题
版权所有,转载请注明出处!动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。比如01背包问题。/* 一个旅行者有一个最多能用M公斤的背包,现在有N件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为P1,P2,...,Pn.若每种物品只有一件求旅行者能获得最大总价值。输入格式:M,NW1,P原创 2012-08-11 21:21:15 · 769 阅读 · 0 评论 -
红黑树——经典
原文:http://www.cppblog.com/goodwin/archive/2011/08/08/152797.html理解红黑树树型结构一直是一种很重要的数据结构, 我们知道二叉查找树BST提供了一种快速查找, 插入的数据结构. 相比散列表来说BST占用空间更小,对于数据量较大和空间要求较高的场合, BST就显得大有用处了.BST的大部分操作平均运行时间为O(logN),转载 2013-03-31 20:52:31 · 785 阅读 · 0 评论 -
从string中解析出单词
写了两个函数,分别借助不同的函数实现,代码的逻辑很简单:#include #include #include //strtok#include#include using namespace std;//实现将一个字符串按照分隔符划分成单词/**思路:*每一个单词的开头也就是第一个非空格的位置,用start = find_first_not_of(' ', end)来得原创 2013-06-27 09:11:18 · 1230 阅读 · 0 评论 -
删除字符串前后的空格
下面是本人写的一个小函数,用来删除string中前面和后面的空格,逻辑很简单,不做多的解释 ....#include #include using namespace std;string& removeSpace(string& srcStr){ srcStr.erase(srcStr.begin(), srcStr.begin() + srcStr.find_first_原创 2013-06-25 16:54:55 · 1092 阅读 · 0 评论 -
杭电1108
最小公倍数Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 27414 Accepted Submission(s): 15184Problem Description给定两个正整数,计算这两个数的最小公原创 2013-09-25 23:40:05 · 911 阅读 · 0 评论 -
杭电1106
排序Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 28373 Accepted Submission(s): 7854Problem Description输入一行数字,如果我们把这行数字中的‘5’都原创 2013-09-25 23:04:31 · 828 阅读 · 0 评论 -
杭电1032
The 3n + 1 problemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 18197 Accepted Submission(s): 6721Problem DescriptionProble原创 2013-09-26 22:56:48 · 1031 阅读 · 0 评论 -
杭电1040
As Easy As A+BTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30295 Accepted Submission(s): 12993Problem DescriptionThese day原创 2013-09-27 13:08:26 · 1065 阅读 · 0 评论 -
POJ 1753
Flip GameTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 26203 Accepted: 11308DescriptionFlip game is played on a rectangular 4x4 field with two-sided原创 2013-09-28 17:07:37 · 692 阅读 · 0 评论 -
杭电1058
Humble NumbersTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13689 Accepted Submission(s): 5956Problem DescriptionA number w原创 2013-09-27 21:42:20 · 657 阅读 · 0 评论 -
杭电1061
Rightmost DigitTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 26061 Accepted Submission(s): 10018Problem DescriptionGiven a原创 2013-09-28 11:38:08 · 1133 阅读 · 0 评论 -
POJ 2965
The Pilots Brothers' refrigeratorTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 16008 Accepted: 6035 Special JudgeDescriptionThe game “The Pilo原创 2013-09-28 22:03:12 · 662 阅读 · 0 评论 -
Linked List Cycle
链表中是否存在环Linked List Cycle II Total Accepted: 10308 Total Submissions: 33751My SubmissionsGiven a linked list, return the node where the cycle begins. If there is no cycle, re原创 2014-04-10 17:18:56 · 672 阅读 · 0 评论