算法设计与分析
一只鸟的天空
一个偏执狂,一个强迫症患者.....
微博地址: http://weibo.com/1765411302
欢迎数据挖掘与机器学习从业者一起交流
展开
-
每对顶点间的最短路径C++实现
// 每对顶点间的最短路径.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100#define Infinity 65535using namespace std;//int L1[MAX][MAX];int L原创 2011-11-11 16:47:53 · 1318 阅读 · 0 评论 -
区间图着色问题(贪心算法)C++实现
区间图着色问题 问题描述:假设要用很多个教室对一组活动进行调度。我们希望使用尽可能少的教室来调度所有活动。请给出一个算法,来确定哪一个活动使用哪一间教室。这个问题也被称为区间图着色问题,即相容的活动着同色,不相容的着不同颜色,使得所用颜色数最少。//贪心算法#include "stdafx.h"#include#define N 100using namespace原创 2011-11-04 02:34:29 · 8299 阅读 · 0 评论 -
活动选择问题(活动安排问题)(最大数目活动选择问题)贪心算法C++实现
// 活动选择问题(活动安排问题)(最大数目活动选择问题).cpp : Defines the entry point for the console application.//贪心算法#include "stdafx.h"#include#define N 100using namespace std;struct Activity{ int number;原创 2011-11-03 22:44:57 · 5364 阅读 · 0 评论 -
最优二叉查找树的期望搜索代价(动态规划)C++实现
// 最优二叉查找树的期望搜索代价.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#include#include#define N 100using namespace std;const double MAX = numeric_l原创 2011-11-03 20:34:38 · 2166 阅读 · 0 评论 -
ACM最长单调递增子序列问题(动态规划)o(n*n)C++实现
最长单调递增子序列问题(动态规划)o() // 最长单调递增子序列.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define N 100using namespace std;//递归打印最长递增子序列void print_it(c原创 2011-11-03 14:57:03 · 3487 阅读 · 0 评论 -
ACM最长公共子序列问题(动态规划)C++实现
// 最长公共子序列问题.cpp : Defines the entry point for the console application.//动态规划问题对于X=x1x2...xm , Y=y1y2...yn的最长公共子序列Z=z1z2...zk1)、如果xm=yn,那么zk=xm=yn,且Zk-1是Xm-1和Yn-1的一个LCS2)、如果xm!=yn,那么zk!=xm蕴含Z是原创 2011-11-02 23:49:31 · 4227 阅读 · 0 评论 -
流水线调度最优问题(装配线调度问题)动态规划 O(n)时间(线性时间)C++实现
流水线调度最优问题(装配线调度问题)动态规划 O(n)时间(线性时间) 问题描述:有二条流水线,每条流水线都有n个站,流水线1,2站j的处理功能相同,但处理时间可能不同,每个站都有一个处理时间,而且从一条流水线的站j-1到另一条流水线站j有一个消耗时间t1[j-1](从流水线1到2)或t2[j-1](从流水线2到1),同一条流水线站j-1到站j的消耗时间忽略不计,物品上每一条流水线有个时间原创 2011-11-02 17:27:07 · 5761 阅读 · 2 评论 -
红黑树的各种操作
红黑树各种操作// 红黑树各种操作.cpp : Defines the entry point for the console application.//#include "stdafx.h"#includeusing namespace std;enum MyColor{red,black};typedef int DType;struct RBTree{原创 2011-11-01 22:49:03 · 1406 阅读 · 0 评论 -
ACM John的农场(最小生成树) C++实现
John的农场Description John是一个农场主,他有几个牧场,为了好好照顾他的牛,他必须在几个牧场之间来回,可糟糕的天气往往使得道路非常泥泞,为此John准备在牧场之间铺一些石子路,这样在下雨天也能快速地从一个牧场到另外一个牧场。但John的资金有限,为了自己能从任一个牧场都通过石子路到达另外一个牧场,他需要好好设计一下线路。请帮助John设计好线路,使得John能从任一个牧场原创 2011-11-01 21:15:00 · 3368 阅读 · 0 评论 -
ACM节约每一个字节 C++实现
节约每一个字节 Description John在做一个项目,项目对存储容量有着近乎苛刻的要求,为此John需要对一些东西进行压缩存储。John的第一个问题就是一大堆的字符串,存储它们太占地方了,为此他想了一个办法:如果字符串具有相同的后缀,那么就把这么字符串的相同后缀和在一起,这样就能节约一点空间了。比如说有两个字符串分别为“Programming”和“Something”,这样它们有原创 2011-11-01 21:10:55 · 1132 阅读 · 0 评论 -
ACM非前缀编码 C++实现
非前缀编码 Description 有很多方法可以实现使用2进制序列对字符进行编码,比如典型的Huffman编码,如果在对字符的2进制编码中不存在某一个字符的编码是另一个字符编码的前缀,那么就称这种编码方式为非前缀编码,Huffman编码就是一种非前缀编码。比如 A:00 B:10 C:0100 D:0101 则这种编码为非前缀编码;A:01 B:10 C:010 D:0000,则这种编原创 2011-11-01 21:08:56 · 2101 阅读 · 1 评论 -
ACM哈夫曼树建立、哈夫曼编码C++实现
// 哈夫曼树.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 20using namespace std;typedef char valType;typedef double wghType;struct HFMn原创 2011-11-01 15:48:12 · 4671 阅读 · 0 评论 -
二叉查找树(二叉排序树)操作大全C++实现
// 链式二叉查找树的各种操作.cpp : Defines the entry point for the console application.//#include "stdafx.h"#includeusing namespace std;struct BSTree{ int data; BSTree *left; BSTree *right;};原创 2011-11-01 00:36:50 · 2842 阅读 · 2 评论 -
ACM小明的数学题ⅡC++实现
小明的数学题ⅡDescription 小明是个小学五年级的学生,为了早点去看自己爱看的卡通,他想快点把作业做完。可是可恶的数学老师今天却布置了一道难题,小明想了很久也不知道该怎么做。你的任务就是帮小明解决掉这道数学题。题目是这样子的,有一个正整数n(1输入:第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例,每行有一个整数n。输出:每行输出一个测试用原创 2011-10-31 23:47:32 · 2073 阅读 · 0 评论 -
ACM小明的数学题Ⅰ C++实现
小明的数学题ⅠDescription 小明是个小学五年级的学生,为了早点去看自己爱看的卡通,他想快点把作业做完。可是可恶的数学老师今天却布置了一道难题,小明想了很久也不知道该怎么做。你的任务就是帮小明解决掉这道数学题。题目是这样子的,有一个整数a(-2^31输入:第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例,每行有两个整数a,n。输出:每行输出原创 2011-10-31 23:32:22 · 1648 阅读 · 0 评论 -
ACM小明的数学题Ⅲ
小明的数学题Ⅲ Description 小明是个小学五年级的学生,为了早点去看自己爱看的卡通,他想快点把作业做完。可是可恶的数学老师今天却布置了一道难题,小明想了很久也不知道该怎么做。你的任务就是帮小明解决掉这道数学题。题目是这样子的,有两个实数a,b,计算a/b,要求保留小数点后面n 位(0输入:第一行是一个整数K,表示有多少个测试用例,以后每行一个测试用例,每行有三个原创 2011-11-04 20:01:39 · 1496 阅读 · 0 评论 -
ACM第K个数 C++实现
第K个数Description 给你一个整数序列和若干个问题,问题是这个序列的第i个元素到第j个元素的片断中的第k大数是什么?比如说给你的序列为(1, 5, 2, 6, 3, 7, 4),问题是(2,5,3),则从第2个元素到第5个元素为(5,2,6,3),排序以后是(2,3,5,6),则第三个数是5。输入:第一行为两个整数n,m(1 输出:每行输出对应问题的结原创 2011-11-04 20:04:14 · 1871 阅读 · 0 评论 -
希尔排序C++实现
希尔排序// 希尔排序.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define N 100using namespace std;typedef int DataType;void shell_sort(DataType *data,原创 2011-11-04 23:09:32 · 1269 阅读 · 0 评论 -
ACM食物链 C++实现
ACM食物链 Description动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。 此人对N个动原创 2011-11-11 16:28:44 · 2835 阅读 · 0 评论 -
ACM黑箱子C++实现
ACM黑箱子Description有一个黑箱子,里面会按升序存储整数,你可以对黑箱子下达下面的指令:a. ADD n 将n加入黑箱子b. Get 获得一个数,这个数在黑箱子里的序号(从0开始计数)是Get的出现次数。黑箱子中最初存了一个数0,现给你一个操作序列,要你输出Get命令时获的那个数。输入:每行是一个命令,如果命令是”ADD”,则后面空一格,有一个整数。输入时保原创 2011-11-11 16:24:10 · 1480 阅读 · 0 评论 -
差分约束系统C++实现
差分约束:线性规划矩阵A的每一行包含一个1与一个-1,其他元素为0.因此,由Ax xj-xi其中1 解决方法:把n个未知元看成n的有向图的顶点,xj-xi可以证明 xi=β(v0,vi)(β(v0,vi)为顶点0到顶点i的最短路径长度)。所以就可以利用Bellm原创 2011-11-10 02:24:21 · 1487 阅读 · 0 评论 -
单源最短路径Bellman_Ford算法C++实现
// 单源最短路径Bellman_Ford算法.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100#define Infinity 65535typedef int WeiType;using namespace st原创 2011-11-09 22:27:46 · 1626 阅读 · 0 评论 -
单源最短路径Dijkstra算法C++实现
// 单源最短路径Dijkstra算法实现.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 200#define Infinity 65535using namespace std;//边尾节点信息结构体struct原创 2011-11-09 20:26:34 · 4679 阅读 · 0 评论 -
ACM唯一的最小生成树C++实现
ACM唯一的最小生成树Description求一个非负权边的无向连通图的最小生成树,如果这个无向图存在两个或两个以上的最小生成树,就输出Not Unique,否则输出最小生成树的边的权值和。输入:第一行是一个整数K,表示有多少个测试用例,以后每个测试用例占m+1行。每个测试用例的第一行为两个整数n,m(3输出:每行输出一个测试用例的结果。如果这个无向图存在两个或两个以上的最原创 2011-11-08 22:29:26 · 2476 阅读 · 0 评论 -
最小生成树Prim算法实现(采用邻接表存储)C++实现
// Prim算法实现(采用邻接表存储).cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdafx.h"#include#define MAX 100#define Infinity 65535typedef int WeiType;原创 2011-11-08 20:00:26 · 6313 阅读 · 0 评论 -
最小生成树Kruskal算法实现C++实现
// Kruskal算法实现.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100typedef int WeiType;using namespace std;//struct Edge{ int no;原创 2011-11-08 18:06:56 · 5922 阅读 · 0 评论 -
求有向图的强连通分支(邻接表存储)C++实现
// 强连通分支(邻接表存储).cpp : Defines the entry point for the console application.//通过二次利用深度优先搜索访问节点,每次的深度优先搜索操作不同 #include "stdafx.h"#include#define MAX 100using namespace std;//深度搜索访问节点层次标志枚举变原创 2011-11-07 17:32:31 · 2571 阅读 · 0 评论 -
有向无回路图拓扑排序C++实现
// 有向无回路图拓扑排序.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100using namespace std;enum Color{white,gray,black};struct edgeNode{原创 2011-11-05 23:24:19 · 2805 阅读 · 1 评论 -
无向图的一节点到另一节点的最短路径(边数最少的路径)(采用邻接表存储)
// 无向图的一节点到另一节点的最短路径(边数最少的路径)(采用邻接表存储).cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100#define MAXQ 50using namespace std;struct edg原创 2011-11-05 20:20:31 · 4812 阅读 · 0 评论 -
无向图的深度优先搜索(采用邻接表存储)C++实现
// 图的深度优先搜索(采用邻接表存储).cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100using namespace std;struct edgeNode{ int no; //边端的序号 char i原创 2011-11-05 18:49:01 · 2993 阅读 · 0 评论 -
无向图的广度优先搜索(采用邻接表存储)C++实现
// 无向图的广度优先搜索(采用邻接表存储).cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100#define MAXQ 50using namespace std;struct edgeNode{ int n原创 2011-11-05 17:07:36 · 3234 阅读 · 0 评论 -
归并排序 C++实现
// 归并排序.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define N 100using namespace std;typedef int DataType;//合并data1[begin...mid]和data1[mid+1.en原创 2011-11-05 03:08:45 · 3077 阅读 · 1 评论 -
ACM零件C++实现
零件 Description 有一种工业零件,分成左右两半,它们的形状由’X’和空格表示的二维图形表示,比如:左半的零件形状如下:XXXXXXXXXXXXXXX右半的零件的形状如下 XXX原创 2011-10-31 22:25:03 · 1327 阅读 · 0 评论 -
ACM恺撒密码C++实现
恺撒的密码Description恺撒时代充满了动荡和危险,恺撒为了保证在战争中传递秘密消息,发明了一种密码。他在所有的信件中将所有的字符按字母顺序向后移动了5个位置(比如说,原文中是A,那么密信中就为F),密信中字母和原文中字母的对应关系如下:密文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 原文:V W X Y Z A原创 2011-10-31 22:21:18 · 3707 阅读 · 0 评论 -
C++基数排序(包含计数排序)
C++基数排序(包含计数排序)1、hanshu.h //自定义头文件#define N1 10#define N2 1000struct Node{ int value; //排序元素值原创 2011-10-28 14:58:40 · 1384 阅读 · 0 评论 -
C++桶排序
C++桶排序#include "stdafx.h"#include#includeusing namespace std; struct Node //结构体{ double value; Node *next;};int _tmain(int argc, _TCHAR* argv[]){ N原创 2011-10-28 14:53:16 · 3362 阅读 · 0 评论 -
每对顶点间的最短路径算法时间复杂度改进C++实现
// 每对顶点间的最短路径.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100#define Infinity 65535using namespace std;//L2[i][j]存储L1[i][j]*Lijin原创 2011-11-14 22:20:18 · 1488 阅读 · 0 评论 -
每对顶点间的最短距离 Floyd_Warshall算法 C++实现
// 每对顶点间的最短距离Floyd_Warshall算法.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 100#define Infinity 65535#define NIL 65535using namespace原创 2011-11-14 22:28:25 · 1330 阅读 · 0 评论 -
每对顶点间的最短距离 稀疏有向图Johnson算法 采用邻接表C++实现
每对顶点间的最短距离 稀疏有向图Johnson算法 C++实现// 稀疏有向图Johnson算法.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define Infinity 65535#define MAX 100using namespa原创 2011-11-16 16:42:57 · 1620 阅读 · 0 评论 -
KMP模式匹配算法 C++实现
KMP模式比配算法 // KMP模式比配算法.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#define MAX 1000using namespace std;char s[MAX],t[MAX];int next[MAX];//原创 2011-11-16 16:46:42 · 1562 阅读 · 0 评论