
夜深人静写算法
SYP_
whh
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
夜深人静写算法 —— 排列问题(分治)
采用分治法,把一个字符串看成两部分:第一部分是它的第一个字符,第二部分是后面的所有字符。这样字符串的全排列就变成了第二部分的全排列,前提是要将第一个字符的情况全部列举出来。(1)首先求所有可能出现在第一个位置的字符,也就是把第一个字符和后面的所有字符交换; (2)然后在把后面的字符串看成新的字符串从(1),如果最后只剩下一个字符,就输出字符串,递归结束。 #includ...原创 2018-10-19 14:14:31 · 414 阅读 · 0 评论 -
蓝桥杯 A Careful Approach (枚举+贪心+二分)
CHUAN SONG MEN一:fmod函数:头文件 <math.h>函数原型: float fmod(float x,float y) ;返回浮点数x除于浮点数y的余数modf()函数modf()是分解x,以得到x的整数和小数部分。double modf(double x,double *integer)返回x的小数部分,符号与x相同。x是浮点值,...原创 2019-03-11 22:01:33 · 357 阅读 · 0 评论 -
蓝桥杯——阶乘计算(大数乘法)
基础练习 阶乘计算 时间限制:1.0s 内存限制:512.0MB问题描述 输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。 将a乘以一个整数k变为将数组A的每一个元素都乘以k,...原创 2019-03-04 17:01:03 · 419 阅读 · 0 评论 -
蓝桥杯———完美的代价(贪心算法)
基础练习 完美的代价 时间限制:1.0s 内存限制:512.0MB问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。 交换的定义是:交换两个相邻的字符 例如mamad 第一次交换 ad : mamda 第二次交换...原创 2019-03-04 16:57:19 · 1055 阅读 · 0 评论 -
夜深人静写算法——最大装载问题(优先队列式分支限界法)
一 问题描述:有一批共个集装箱要装上2艘载重量分别为C1和C2的轮船,其中集装箱i的重量为Wi,且装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这2艘轮船。如果有,找出一种装载方案。 容易证明:如果一个给定装载问题有解,则采用下面的策略可得到最优装载方案。 (1)首先将第一艘轮船尽可能装满; (2)将剩余的集装箱装上第二艘轮船。二: (1)解...原创 2018-12-25 16:42:39 · 2965 阅读 · 1 评论 -
夜深人静写算法——布线问题(广搜bfs)
一: 问题描述,求从a走到b的最短路径 #include <iostream> #include <cstring> #include <queue> #include <cstdlib> using namespace std; int dir[4][2] = {1,0,-1,0,0,1,0,-1}; const int...原创 2018-12-18 17:03:03 · 422 阅读 · 0 评论 -
夜深人静写算法——n皇后问题(非递归回溯)
#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#include <cstdlib>using namespace std; class Queue{ friend int nQueue(int n); private:...原创 2018-12-10 21:13:00 · 355 阅读 · 0 评论 -
夜深人静写算法——最小堆实现优先级队列
一:1.优先级队列定义: 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 。2.最小堆:最小堆,是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于其左子节点和右子节点的值。堆...原创 2018-11-27 15:26:44 · 1209 阅读 · 0 评论 -
夜深人静写算法——图像压缩(动态规划)
图像压缩: 一: 对于图像像素点进行压缩:对于一组像素数组用二进制bit位表示,如果像素值从 0到255,最多用8位二进制表示。如果像素值为5,用8位二进制表示会浪费空间,所以通过压缩的方法进行存储。 例如: 23,17,28,23,27,29,30,18,28,27,39,48,129 ,139,178,220,23,9,183,133,19,299.... ...原创 2018-11-13 19:40:52 · 2836 阅读 · 0 评论 -
夜深人静写算法——01背包(动态规划)
01背包: 一: 01背包问题需要求解的就是,体积V的背包中物体总价值最大化,第N件物品中第i件是否要放入背包中?(其中每个物品最多只能放一件) ( 物品体积为w[i],物品价值为v[ i ] ) ; 二: 定义二维数组 dp[ i ][ j ]表示当前背包大小为 j 时,对于第 i 件物品的最优解(可能放入,也可能不放入); 动态规划方程...原创 2018-11-13 19:08:51 · 521 阅读 · 0 评论 -
夜深人静写算法——最长公共子序列(动态规划)
一. 问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA二.寻找最优子结构,用dp[i][j] 来表示第一个字符串前 i 个字符和第二个字符串前 j 个字符的最优解(最长公共子序列);有两种可能: (字符...原创 2018-11-11 13:25:50 · 402 阅读 · 0 评论 -
夜深人静写算法——— 矩阵乘法(动态规划)
http://lx.lanqiao.cn/problem.page?gpid=T417 算法提高 矩阵乘法 时间限制:3.0s 内存限制:256.0MB 问题描述 有n个矩阵,大小分别为a0*a1, a1*a2, a2*a3, ..., a[n-1]*a[n],现要将它们依次相乘,只能使用结合率,求最少需要多少次运算。 两个大小分别为p*q和q*r的矩阵相...原创 2018-05-25 21:10:03 · 1718 阅读 · 0 评论 -
夜深人静写算法———线性时间选择(分治,最坏情况处理)
一: 线性时间选择中,最坏情况下时间复杂度为O(n^2) , 但如果在线性时间内找到一个划分基准,使得按照这个基准所划分的两个子数组的长度至少为原数组的k倍( 0<k<1)。二:(1) 将n个输入的元素分成 (n-4)/5组,每一组都是5个元素,可能最后一个不是,用任意的排序算法将每组的5个元素排好,然后取出5个元素的中位数。(2)递归调用Select函数(见程序)...原创 2018-10-29 21:26:39 · 548 阅读 · 0 评论 -
夜深人静写算法——线性时间选择(分治,数组第n小的数)
线性时间选择:求数组中第n小的值一: 解决的方法是基于快速排序解决的,当快速排序进行一次排序的时候,在参考点左侧的都是比参考值小的,右侧都是比参考点大的。 (1)参考点的下标等于 n-1,说明参考点就是第n小的值。 (2)参考点的下标大于n-1 , 说明所要求得第n小的值在参考值左侧的数组里,只需要对左侧数组进行快速排序。 (3)参考点的下标小于n-1,说明所要求的第...原创 2018-10-23 20:36:08 · 670 阅读 · 0 评论 -
夜深人静写算法——快速排序(分治)
快速排序:采用分治的方法 (一): (1) 将数组的第一个作为参考值,将所有小于该值的数移动到改值左侧,将所有大于该值的数移动到数组右侧(利用两个指针分别从数组的首尾开始向中间扫描); (2)将参考值的左侧和右侧看作新的两个数组 (3)重新从(1)开始,直到数组的大小为0; (二); 如图为第一次递归,将小于23的移到左侧,大于23的移到右侧。...原创 2018-10-20 19:18:11 · 357 阅读 · 0 评论 -
夜深人静写算法——合并排序(分治,非递归排序)
合并排序(非递归排序):首先将数组a中相邻元素两两配对,用合并算法将他们排序,构成 n/2 组长度为 2 的排好序的子数组段,然后再将它们排序成长度为4的排好序的子数组段,如此继续下去,直至整个数组排好序。 程序如下:#include<stdio.h>#include <iostream>#include <algorithm>...原创 2018-10-19 22:38:53 · 301 阅读 · 0 评论 -
夜深人静写算法——合并排序(分治,递归)
合并排序:采用分治的方法。 第一步:(1) 将数组分成两部分(2)然后将分开的数组当成一个新的数组 ,重复操作(1),直到数组的大小为1.第二步:将分开的已排好的小数组进行合并(按照一定的顺序)。因为最小的数组的大小为1,然后进行合并的排序,所以可以保证小数组总是排好序的#include <stdio.h>#include <iostrea...原创 2018-10-19 20:54:17 · 287 阅读 · 0 评论 -
夜深人静写算法——棋盘覆盖问题(分治)
棋盘覆盖问题:问题描述:现在有一个大小的棋盘,在棋盘内部有一只特别的棋子,输入的坐标为X和Y。要求尝试用4种不同类型的骨牌将棋盘覆盖,要求,骨牌之间不得重叠,并且骨牌不得覆盖特殊棋子,每个骨牌占用3个单位大小,形状如下。 (a) (b) ...原创 2018-10-19 14:32:35 · 291 阅读 · 0 评论 -
并查集入门
一、问题引入原题:杭电hdu1232畅通工程题意:首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几条路,实质就是求有几个连通分支。如果是1个连通分支,说明整幅图上的点都连起来...转载 2019-03-18 16:15:34 · 202 阅读 · 0 评论