算法
文章平均质量分 70
在风雨中奔跑
这个作者很懒,什么都没留下…
展开
-
欧几里德算法求最大公约数
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。定理:gcd(a,b) = gcd(b,a mod b)。第一种可以写成:int Gcd(int a, int b){ while(b != 0) { int r = b; b = a % b; a = r; } return转载 2013-11-03 21:47:33 · 1031 阅读 · 0 评论 -
简单:01背包问题
题目1 : 01背包时间限制:20000ms单点时限:1000ms内存限制:256MB描述且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了!小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖品需要need(i)张奖券进行兑换,同时也只能兑换一次,为了使得原创 2014-08-13 15:14:03 · 947 阅读 · 0 评论 -
递归算法---全排列
一个使用递归算法实现全排列先说一下算法思想:原创 2014-09-26 16:31:22 · 583 阅读 · 0 评论 -
递归算法---整数划分
用P(n,m)来表示整数划分,n为要划分的数,m为后面不能超过的数例:n=7时 7 6+1 5+2 5+1+1 4+3 4+2+1 4+1+1+1 3+3+1 3+2+2 3+2+1+1 3+1+1+1+1 2+2+2+1 2+2+1+1+1 2+1+1+1+1+1 1+1+1+1+1+1+1原创 2014-09-26 17:13:05 · 904 阅读 · 0 评论 -
二分搜索技术
二分搜索技术题目描述给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。输入输入包括若干个用例,第一行为一个正整数n表示用例个数,接下来每个用例占两行,第一行为为一个正整数k和x,表示k个元素,要求查找x,第二行为k个已排序正整数,输出每个用例用一行输出找出的元素的位置和比较次数,用一个空格隔开,如果不存在,则位置用0表示。样例输入4原创 2014-11-28 19:58:41 · 1637 阅读 · 0 评论 -
分治算法--L型骨牌棋盘覆盖
L型骨牌棋盘覆盖题目描述有一个棋盘,要求用给定的四种骨牌进行覆盖。四种骨牌定义如下: 给定的棋盘中有一个格子不存在,即不需要覆盖的格子。输入输入有多个用例,第一个为用例个数n,接下来每个用例占两行,其中第一行为棋盘大小(如3,表示棋盘大小为2的3次,即8行8列),第二行为两个正整数,表示空缺的格子行号和列号。输出每个用例用一行输出各种骨牌的使用数,用一个空格隔开原创 2014-11-28 20:19:32 · 7223 阅读 · 1 评论 -
N后问题
N后问题问题描述将n个皇后放在n x n的棋盘上,使得任何2个皇后不能被放在同一行或同一列或同一斜线上。输入输入包括干个测试用例,第一行为一个正整数K(1输出每个用例,用一行输出符合条件的放置种数。样例输入287样例输出9240题解:用递归的思想,保存前面已存在的数据。皇后不能在对角线,同一行或同一列。#include usin原创 2015-01-25 17:27:59 · 604 阅读 · 0 评论 -
活动安排问题
活动安排描述:设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si输入:输入只有一个用例,第一行为一正整数n,表示活动个数,接下来n行,每行两个整数,分别表示第i号活动的起始时间和结束时间。输出:用一行输出所能安排的最原创 2014-12-20 19:50:20 · 899 阅读 · 0 评论 -
矩阵连乘问题
给定有n个连乘矩阵的维数,要求计算其采用最优计算次序时所用的乘法次数,即所要求计算的乘法次数最少。例如,给定三个连乘矩阵{A1,A2,A3}的维数分别是10*100,100*5和5*50,采用(A1A2)A3,乘法次数为10*100*5+10*5*50=7500次,而采用A1(A2A3),乘法次数为100*5*50+10*100*50=75000次乘法,显然,最好的次序是(A1A2)A3,乘法次数原创 2015-01-18 18:16:23 · 871 阅读 · 0 评论 -
KMP next数组详解
int get_nextval(SString T,int &nextval[ ]){ //求模式串T的next函数修正值并存入数组nextval。 i=1; nextval[1]=0; j=0; while(i if(j==0||T[i]==T[j]){转载 2015-04-10 15:39:04 · 799 阅读 · 0 评论 -
#1015 : KMP算法
#1015 : KMP算法时间限制:1000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你们能不能够判断一段文字(原创 2015-04-20 11:35:23 · 453 阅读 · 0 评论 -
快速排序
博文转自:http://developer.51cto.com/art/201403/430986.htm高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了转载 2015-07-02 12:51:00 · 399 阅读 · 0 评论 -
简单:01背包问题
背包问题是一个经典的动态规划模型,容易描述,容易理解。背包问题可简单描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。01背包问题的特点是,每种物品仅有一件,可以选择放或不放。01背包问题描述: 有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过原创 2014-08-13 15:21:05 · 633 阅读 · 0 评论 -
简单:01背包问题
背包问题是一个经典的动态规划模型,容易描述,容易理解。背包问题可简单描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。01背包问题的特点是,每种物品仅有一件,可以选择放或不放。01背包问题描述: 有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过原创 2014-08-13 15:20:12 · 635 阅读 · 0 评论 -
P1092全排列
描述输入两个自然数m,n 1输出n个数的第m种全排列。如 :输入 3 1输出 1 2 3格式输入格式在一行中输入n m输出格式一个数列,既n个数的第m种排列每两个数之间空1格样例1样例输入1[复制] 3 2样例输出1[复制] 1 3 2code :// 主要是用康托展开式逆运算算法#include #incl原创 2013-11-05 21:08:07 · 1219 阅读 · 0 评论 -
次方求模
蒙哥马利幂模运算特点及原理: 来自百度针对快速模幂运算这一课题,西方现代数学家提出了大量的解决方案,通常都是先将幂模运算转化为乘模运算。蒙哥马利模乘的优点在于减少了取模的次数(在大数的条件下)以及简化了除法的复杂度(在2的k次幂的进制下除法仅需要进行左移操作)。模幂运算是RSA 的核心算法,最直接地决定了RSA 算法的性能。例如求D=C^15%N由于:a*b % n = (a原创 2013-11-07 16:25:15 · 747 阅读 · 0 评论 -
三点顺序
利用矢量叉积判断是逆时针还是顺时针。设A(x1,y1),B(x2,y2),C(x3,y3),则三角形两边的矢量分别是:AB=(x2-x1,y2-y1), AC=(x3-x1,y3-y1)则AB和AC的叉积为:(2*2的行列式)|x2-x1, y2-y1||x3-x1, y3-y1|值为:(x2-x1)*(y3-y1) - (y2-y1)*(x3-x1)利用右手法则进行判原创 2013-11-09 22:16:05 · 566 阅读 · 0 评论 -
kruskal 算法
Kruskal 算法链表基本模板:#include using namespace std;typedef struct node{ int l; int r; int length; struct node *next;}Node,*LNode; // 定义结构体void Init(LNode &L) // 初始化结构体{ L=new Node; L-原创 2013-12-17 19:24:07 · 631 阅读 · 0 评论 -
prim算法
借用一张图片说明:code:#include using namespace std;#define MAX 1000int map[MAX][MAX]; // 邻接矩阵int dis[MAX]; // 用来保存每一个到c的距离int visit[MAX]; // 是否访问#define inf 110000int n;void prime(原创 2013-12-19 18:55:16 · 736 阅读 · 0 评论 -
最短路径(Dijkstra算法)
最短路径描述:已知一个城市的交通路线,经常要求从某一点出发到各地方的最短路径。例如有如下交通图:则从A出发到各点的最短路径分别为:B:0C:10D:50E:30F:60输入:输入只有一个用例,第一行包括若干个字符,分别表示各顶点的名称,接下来是一个非负的整数方阵,方阵维数等于顶点数,其中0表示没有路,正整数表示两点之间边的长度。可以假定该图为有向图。原创 2013-12-19 21:47:16 · 958 阅读 · 0 评论 -
floyd算法(最短路径)
最短路径描述:已知一个城市的交通路线,经常要求从某一点出发到各地方的最短路径。例如有如下交通图: 则从A出发到各点的最短路径分别为:B:0C:10D:50E:30F:60输入:输入只有一个用例,第一行包括若干个字符,分别表示各顶点的名称,接下来是一个非负的整数方阵,方阵维数等于顶点数,其中0表示没有路,正整数表示两点之间边的长度。可以假定该图为有向图。原创 2013-12-20 16:09:00 · 671 阅读 · 0 评论 -
P1131最小公倍数和最大公约数问题
描述输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P、Q的个数。条件:1.P、Q是正整数2.要求P、Q以xO为最大公约数,以yO为最小公倍数。试求,满足条件的所有可能的两个正整数的个数。格式输入格式两个正整数输出格式满足条件的所有可能的两个正整数的个数样原创 2014-03-21 21:25:30 · 936 阅读 · 0 评论 -
题目1 : Trie树
描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个词典里面找到以这个字符串开头的所有单词呢?”身经百战的小Ho答道:“怎么会不能呢!你每给我一个字符串,我就依次遍历词典里的所有单词,检查你给原创 2014-07-15 19:48:46 · 632 阅读 · 0 评论 -
数组中未出现的最小正整数
数组中未出现的最小正整数【题目】给定一个无序整型数组arr,找到数组中未出现的最小正整数。 【举例】arr=[-1,2,3,4]。返回1。arr=[1,2,3,4]。返回5。code:package com.leetcode.code;public class MissNum { public static void swap(T t1, T原创 2015-07-19 11:25:53 · 963 阅读 · 0 评论