算法
文章平均质量分 59
Unique-You
这个作者很懒,什么都没留下…
展开
-
递归---Hanoi塔问题
http://shmilyaw-hotmail-com.iteye.com/blog/2077098简介 关于Hanoi塔问题的分析,在网上的文章都写烂了。之所以打算写这篇文章,更多的是针对这个问题相关的各种数学思路和代码实现过程做一个总结。它虽然是一个看似简单的问题,后面引申出来的问题推导方法和思路还是比较丰富的。 问题描述 这个问题起源原创 2017-12-19 16:58:45 · 648 阅读 · 0 评论 -
递归---排列问题
一、排列问题 设R={r1,r2,...,rn}是要进行排列的n个元素,Ri=R-{ri}。集合x中元素的全排列记为Perm(X)。 (ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。 R的全排列可归纳如下: 当n=1时,Perm(R)=(r),其中r是集合中唯一的元素; 当n>1时,Pe原创 2017-12-19 15:50:53 · 1481 阅读 · 0 评论 -
递归---整数划分问题
将正整数n表示成一系列正整数之和,n=n1+n2+n3+......nk(其中,n1>=n2>=......nk>=1,k>=1),正整数n的这种表示称为正整数n的划分。正整数n的不同划分个数称为正整数n的划分数,记作p(n)。例如:正整数6有11总不同的划分6;5+1;4+2,4+1+1;3+3,3+2+1,3+1+1+1;2+2+2,2+2+1+1,2+原创 2017-12-19 16:50:57 · 388 阅读 · 0 评论 -
动态规划---流水作业调度
http://blog.csdn.net/liufeng_king/article/details/86783161、问题描述: n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi。流水作业调度问题要求确定这n个作业的最优加工顺序,使得从转载 2017-12-27 21:03:41 · 6535 阅读 · 1 评论 -
动态规划---最优二叉搜索树问题
http://blog.csdn.net/liufeng_king/article/details/86946521、问题描速: 设 S={x1, x2, ···, xn} 是一个有序集合,且x1, x2, ···, xn表示有序集合的二叉搜索树利用二叉树的顶点存储有序集中的元素,而且具有性质:存储于每个顶点中的元素x 大于其左子树中任一个顶点中存储的元素,转载 2017-12-29 10:52:56 · 2539 阅读 · 0 评论 -
求2n个数中最大值和最小值的最少比较次数
共2n个数。前两个数比较,大的为最大值, 小的为最小值, 用掉一次比较。后面2*(n-1)个数, 每两个比较, 大的同最大值比较, 小的同最小值比较, 3*(n-1)次比较, 共3*(n - 1) + 1 = 3n - 2次比较。例:求30000个数的最大值和最小值,最少比较次数:第一个数和第二个数比较,大的为最大值,小的为最小值,比较1次;后面29998个数,每两个比较,共比较29998/2次,...原创 2018-04-09 21:32:55 · 10966 阅读 · 0 评论 -
构造回文
[编程题] 构造回文给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢?输出需要删除的字符个数。输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出一个整数,代表最少需要删除的字符个数。输入例子1:abcdagoogle输出例子1:22#include <io...原创 2018-04-05 13:58:09 · 307 阅读 · 0 评论 -
字符移位
算法基础-字符移位小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。你能帮帮小Q吗?输入描述:输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.输出描述:对于每组数据,输出移位后的字符串。输入例子1:AkleBiCeilD输出例子1:kleieilABCD#include <iostr...原创 2018-04-05 14:18:35 · 1073 阅读 · 0 评论 -
有趣的数字
有趣的数字时间限制:1秒空间限制:32768K小Q今天在上厕所时想到了这个问题:有n个数,两两组成二元组,差最小的有多少对呢?差最大呢?输入描述: 输入包含多组测试数据。 对于每组测试数据: N - 本组测试数据有n个数 a1,a2...an - 需要计算的数据 保证: 1<=N<=100000,0<=ai<=INT_MAX. 输出描述:对于每组...原创 2018-04-05 14:54:14 · 693 阅读 · 0 评论 -
字符串中找出连续最长的数字串
读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。输入例子1:abcd12345ed125ss123456789输出例子1:123456789 #include <iostream>#includ...原创 2018-08-26 12:53:09 · 1329 阅读 · 0 评论 -
n个数里最小的k个
找出n个数里最小的k个 输入描述:每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n不超过100。输出描述:输出n个整数里最小的k个数。升序输出输入例子1:3 9 6 8 -10 7 -11 19 30 12 23 5输出例子1:-11 -10 3 6 7#include <iostream>#include <...原创 2018-08-26 12:54:07 · 577 阅读 · 0 评论 -
n个数里出现次数大于等于n/2的数
输入n个整数,输出出现次数大于等于数组长度一半的数。 输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。输入例子1:3 9 3 2 5 6 7 3 2 3 3 3输出例子1:3#include <iostream>#include &l...原创 2018-08-26 12:55:06 · 755 阅读 · 0 评论 -
求和
输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来 输入描述:每个测试输入包含2个整数,n和m输出描述:按每个组合的字典序排列输出,每行输出一种组合输入例子1:5 5输出例子1:1 42 35#include <iostream>#include <...原创 2018-08-26 12:58:16 · 843 阅读 · 0 评论 -
删除公共字符
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.” 输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串输入例子1:They are students. aeiou输出例子1:Thy r stdnts....原创 2018-08-26 13:00:09 · 1102 阅读 · 0 评论 -
动态规划---图像压缩
1、问题描述: 在计算机中,常用像素点的灰度值序列{p1,p1,……pn}表示图像。其中整数pi,1 压缩的原理就是把序列{p1,p1,……pn}进行设断点,将其分割成一段一段的。分段的过程就是要找出断点,让一段里面的像素的最大灰度值比较小,那么这一段像素(本来需要8位)就可以用较少的位(比如7位)来表示,从而减少存储空间。 b代表bits,l代表原创 2017-12-27 09:06:28 · 8584 阅读 · 4 评论 -
动态规划---多边形游戏
1、问题描述: 给定N个顶点的多边形,每个顶点标有一个整数,每条边上标有+(加)或是×(乘)号,并且N条边按照顺时针依次编号为1~N。下图给出了一个N=4个顶点的多边形。 游戏规则 :(1) 首先,移走一条边。 (2) 然后进行下面的操作: 选中一条边E,该边有两个相邻的顶点,不妨称为V1和V2。对V1和V2顶点所标的整数按照E上所标运算符号转载 2017-12-26 20:40:19 · 14465 阅读 · 3 评论 -
分治---二分搜索,棋盘覆盖
参考http://blog.csdn.net/liufeng_king/article/details/84778681、分治法分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归的解这些子问题,然后将各子问题的解合并得到原问题的解。 分治法所能解决的问题一般具有以下几个特征: 1) 该问题的规模缩小到一原创 2017-12-19 20:00:00 · 892 阅读 · 0 评论 -
分治---合并排序
并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序,合并排序也叫归并排序。1、递归实原创 2017-12-19 21:02:44 · 402 阅读 · 0 评论 -
分治---快速排序
1、未优化的快速排序 快速排序的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。见点击打开链接2、随机标记元素后的快速排序 未随机化处理的快速排序最坏情况发生在划分过原创 2017-12-19 21:28:38 · 177 阅读 · 0 评论 -
分治---线性时间选择
g原创 2017-12-19 22:10:52 · 511 阅读 · 1 评论 -
分治---循环赛日程表
问题描述: 设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能参赛一次; (3)循环赛在n-1天内结束。 请按此要求将比赛日程表设计成有n行和n-1列的一个表。在表中的第i行,第j列处填入第i个选手在第j天所遇到的选手。其原创 2017-12-20 17:04:05 · 929 阅读 · 0 评论 -
五大常用算法之一:分治法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合转载 2017-12-20 18:45:22 · 675 阅读 · 0 评论 -
动态规划---斐波那契数列
1、动态规划算法: 动态规划:通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。 基本思想:若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦转载 2017-12-20 19:41:19 · 852 阅读 · 0 评论 -
动态规划---矩阵连乘问题
参考http://blog.csdn.net/liufeng_king/article/details/8497607问题描述:给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和每个矩阵规模,输出结果为计算矩阵连乘积的计算次序和最少数乘次数原创 2017-12-21 09:37:03 · 1831 阅读 · 0 评论 -
动态规划---最长公共子序列
问题描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X= { x1, x2,…, xm},则另一序列Z= {z1, z2,…, zk}是X的子序列是指存在一个严格递增的下标序列 {i1, i2,…, ik},使得对于所有j=1,2,…,k有 Xij=Zj。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增原创 2017-12-21 12:47:58 · 962 阅读 · 0 评论 -
五大常用算法之二:动态规划
五大常用算法之二:动态规划算法一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的转载 2017-12-20 18:53:21 · 197 阅读 · 0 评论 -
动态规划---最大子段和,最大子矩阵和,最大m子段和
1、最大子段和问题 问题定义:对于给定序列a1,a2,a3……an,寻找它的某个连续子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。 (1)枚举法求解 枚举法思路如下: 以a[0]开始: {a[0]}, {a[0],a[1]},{a[0],a[1],a[2]}……{a[原创 2017-12-21 14:46:30 · 11545 阅读 · 13 评论 -
动态规划---凸多边形的最优三角剖分问题
1、问题相关定义: (1)凸多边形的三角剖分:将凸多边形分割成互不相交的三角形的弦的集合T。 (2)最优剖分:给定凸多边形P,以及定义在由多边形的边和弦组成的三角形上的权函数w。要求确定该凸多边形的三角剖分,使得该三角剖分中诸三角形上权之和为最小。 凸多边形三角剖分如下图所示: 2、最优子结构性质: 若转载 2017-12-26 10:21:37 · 2146 阅读 · 1 评论 -
倒置字符串
将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I 输入描述:每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100输出描述:依次输出倒置之后的字符串,以空格分割输入例子1:I like beijing.输出例子1:beijing. like I...原创 2018-08-26 13:02:00 · 2043 阅读 · 0 评论