
算法
文章平均质量分 76
-_-益
工作积极。学习能力强,喜欢与人沟通。
展开
-
火车车厢重排
火车车厢重排 一列货车共有n节车厢,每个车厢都有自己的编号,编号范围从1~n。给定任意次序的车厢,通过转轨站将车厢编号按顺序重新排成1~n。转轨站共有k个缓冲轨,缓冲轨位于入轨和出轨之间。开始时,车厢从入轨进入缓冲轨,经过缓冲轨的重排进入出轨。缓冲轨按照先进先出方式----队列,编写一个算法,将任意次序的车厢进行重排,.重排后车厢次序为n~1 。 重排成功:则输出,否则,程原创 2012-10-20 13:38:30 · 1936 阅读 · 1 评论 -
Edmonds-Karp算法_网络流_最大流问题
可行流:即多条弧的集合,且每条弧的流量为非负的,且不超过该弧的容量;流入原点的流量等于流出终点的流量。最大流:即网络中的流量最大的可行流。最大流的求法:即由原网络得到残量网络,再找到残量网络中的增广路,根据增广路求最大流。步骤: 1. 找到残量网络中的一条增广路。 2. 求出该增广路上的最小的流量值,使各个弧的容量都减去这个值,并各个反向弧都加上这个值。原创 2015-04-07 14:01:09 · 610 阅读 · 0 评论 -
标准二维表问题-穷举
问题描述:设n 是一个正整数。2xn的标准2维表是由正整数1,2,…,2n 组成的2xn 数组,该数组的每行从左到右递增,每列从上到下递增。2xn的标准2维表全体记为Tab(n)。例如,当n=3时Tab(3)如下:算法如下:#include #define MAX 100using namespace std;int a[2][MAX];int c原创 2015-04-07 14:41:09 · 2345 阅读 · 0 评论 -
重复元素排序问题--递归
Description设集合R={r1,r2,...,rn}是要进行排列的n个元素,其中r1,r2,...,rn可能相同。试着设计一个算法,列出R的所有不同排列。即,给定n以及待排的n个可能重复的元素。计算输出n个元素的所有不同排列。Input第1行是元素个数n,1<=n<=15。接下来的1行是待排列的n个元素,元素中间不要加空格。Output程原创 2015-04-07 14:32:25 · 873 阅读 · 0 评论 -
循环赛日程表--分治法
设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能参赛一次; (3)循环赛在n-1天内结束。算法思路:按分治策略,我们可以将所有的选手分为两半,则n个选手的比赛日程表可以通过n/2个选手的比赛日程表来决定。代码如下:#incl原创 2015-04-07 14:19:50 · 3196 阅读 · 0 评论 -
最长单调递增子序列--动态规划
问题描述:设A是n个不同正整数构成的序列,求A的一个最长递增子序列。例如序列为1,5,3,8,10,6,4,9;它的最长递增子序列为1,5,8,10;1,5,8,9;...。以下提供了两个算法求解。LISdyna:时间复杂度为:n^2LIS:时间复杂度:n(logn)代码如下:#include using namespace std;int LISd原创 2015-04-07 20:32:43 · 1343 阅读 · 0 评论 -
二分图最大匹配-匈牙利算法
二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联在两个顶点中,恰好一个属于集合X,另一个属于集合Y。给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。图中包含边数最多的匹配称为图的最大匹配。图中 画红线的就是这个二分图的最大匹配。代码如下:#include #include #define M原创 2015-04-07 13:50:28 · 378 阅读 · 0 评论 -
图片压缩算法--动态规划
#include #include #define N 100using namespace std;int p[N+1] , s[N+1] , l[N+1] , b[N+1];//像素点集 ,每段所需长度 ,每段像素个数 , 每段的像素点位数/*-----------计算像素的位数*/int length(int i){ int k = 1;原创 2015-04-07 20:37:03 · 725 阅读 · 0 评论 -
流水作业调度-动态规划
#include #include #define N 100using namespace std;/*----------作业*/class Jobtype{ public: int operator <= (Jobtype a) const{原创 2015-04-07 20:42:18 · 1683 阅读 · 0 评论 -
众数问题-递归和分治
问题描述 给定一个数组,找出其中出现次数最多的那个元素(即众数)。例如:1 2 2 2 3 5众数是: 2算法思路:先排序 后用分治法计算求解分治法求解代码如下:#include #include #include using namespace std;/*----------快速排序*/int Partit原创 2015-04-07 14:10:28 · 4941 阅读 · 1 评论 -
整数因子分解问题--递归--动态规划
算法实现题 整数因子分解问题 问题描述: 大于 1 的正整数 n 可以分解为:n=x1*x2*…*xm。实现代码如下:#include #include #define MAX 10000using namespace std;/*----------递归---整数分解*/void solve(int m , int * ans){原创 2015-04-07 14:25:50 · 4280 阅读 · 0 评论 -
最优二叉搜索树-动态规划
#include using namespace std;void OptimalBinarySearchTree(double a[] , double b[] , int n , double **m , int **s , double **w){ //初始化构造无内部节点的情况 for(int i = 0 ; i <= n ; i++){原创 2015-04-07 20:45:15 · 854 阅读 · 0 评论 -
大数加法.减法.乘法.除法
大数加法 代码实现:#include #include typedef char Str[1000];void PrintNum(int sum[] , int len)///---------输出{ int i; for(i = len-1 ; i >= 0 ; i--) printf("%d",sum原创 2012-11-07 20:47:30 · 802 阅读 · 5 评论 -
Cantor数表
cantor数表(算法竞赛入门 p81) 1/1 1/2 1/3 1/4 1/5............... 2/1 2/2 2/3 2/4 3/1 3/2 3/3原创 2012-11-06 22:19:19 · 494 阅读 · 0 评论 -
收费公路重建问题
收费公路重建问题(数据结构与算法分析--C语言描述 305页,回溯算法----收费公路重建问题) 例: 输入 15原创 2012-10-29 00:12:35 · 1373 阅读 · 0 评论 -
最大子串乘积
最大子串乘积 输入n个数,求它的最大的连续子串乘积。 例: 输入 7 1 2 -3 7 0 2 3 输出原创 2012-10-21 10:51:04 · 513 阅读 · 0 评论 -
图论--Floyd_Warshall算法---邻接矩阵实现
Floyd_Warshall算法---邻接矩阵实现 求每个点到其它点的最短路径。C语言实现: 除核心算法外,其他函数有的可以优化。 例如:层次 遍历。代码实现:#include#include#include#define原创 2012-10-21 11:42:44 · 1230 阅读 · 0 评论 -
图论--Prim算法---邻接矩阵实现
Prim算法---邻接矩阵实现 求最小生成树。C语言实现: 代码实现:#include#include#include#define MAX_LEN 20#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INTMAX 0xFFFFt原创 2012-10-21 11:47:49 · 871 阅读 · 0 评论 -
图论--bellman_Ford算法---邻接表实现
bellman_Frod算法 求最短路径。 C语言实现。代码实现:#include #include #include #define MAX_LEN 20#define TRUE 1#define FALSE 0#define INTMAX 0xFFFF#define OK 1#define ERROR 0原创 2012-10-21 11:32:47 · 697 阅读 · 0 评论 -
栈.树--多项式表达式的转换----二叉树实现
多项式表达式的转换----二叉树实现 例: 输入 12+345+** 输出 前序遍历:原创 2012-10-21 11:56:04 · 1169 阅读 · 0 评论 -
图论--Dijkstra算法----邻接表实现
Djistra算法 输入的权值不能为负。C语言实现: 算法外部有所改动,核心算法没有改。声明: 代码在:code::blocks上编译通过。其他的没有试过。代码实现: #include #include #include #define MAX_LEN 20#def原创 2012-10-21 11:28:07 · 2952 阅读 · 3 评论 -
排序元素--递归实现
排序元素 本程序递归与素环问题一样。 输出: 11212312341241243131321324134134214142142314314322212132134214214323231231423423412424124132432431331原创 2012-10-30 19:49:12 · 428 阅读 · 0 评论 -
图论--kruskal算法
kruskal算法 代码实现:c#include #include #include #define MAX_LEN 20#define INTMAX 0xFFFF#define TRUE 1#define FALSE 0typedef char type[MAX_LEN];int father[MAX_LEN];int son原创 2012-10-22 22:58:56 · 532 阅读 · 0 评论 -
图论--SPFA算法---邻接表实现
SPFA算法 求一点到另外有通路的点权值最小的路径。 因为本人很喜欢C,所以SPFA算法就用C实现,代码有的地方可以优化。例如:层次遍历。 代码实现: #include #include #include #define MAX_LEN 20#define TRUE 1#define FALSE 0#d原创 2012-10-21 11:10:08 · 593 阅读 · 0 评论 -
素数环问题
素数环问题 例: 杭电1016题 A环是由n周期图中所示。将自然数1,2,...中,n分别到每个圆,并在两个相邻的圆圈中的数字的总和应该是一个素数。注: 第一个圆的数目应始终为1。 代码实现:#include #include i原创 2012-10-26 12:36:59 · 418 阅读 · 0 评论 -
求大数N!
求n的阶乘 大家都知道小数的阶乘非常容易求,大数的阶乘也比较容易。 代码实现:#include #define MAX 100000int sum[MAX];void PrintNum()///----print{ int i; for(i = MAX-1 ; i>= 0 ; i--){原创 2012-11-06 22:14:50 · 722 阅读 · 0 评论 -
最近点对问题 ---递归,分治
问题描述:在二维平面上的n个点中,找出最近的一对点,就是最近点对问题。代码如下:#include #include #include using namespace std;/*--------------顶点坐标*/typedef struct Point{ double x , y;};/*--------------操作顶点坐标*/原创 2015-04-07 14:45:28 · 957 阅读 · 0 评论